| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 1 | /* | 
| Alex Sakhartchouk | a04e30d | 2011-04-29 16:49:08 -0700 | [diff] [blame] | 2 |  * Copyright (C) 2011 The Android Open Source Project | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 3 |  * | 
 | 4 |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
 | 5 |  * you may not use this file except in compliance with the License. | 
 | 6 |  * You may obtain a copy of the License at | 
 | 7 |  * | 
 | 8 |  *      http://www.apache.org/licenses/LICENSE-2.0 | 
 | 9 |  * | 
 | 10 |  * Unless required by applicable law or agreed to in writing, software | 
 | 11 |  * distributed under the License is distributed on an "AS IS" BASIS, | 
 | 12 |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | 13 |  * See the License for the specific language governing permissions and | 
 | 14 |  * limitations under the License. | 
 | 15 |  */ | 
 | 16 |  | 
 | 17 | #ifndef ANDROID_RS_CONTEXT_H | 
 | 18 | #define ANDROID_RS_CONTEXT_H | 
 | 19 |  | 
| Jason Sams | a557780 | 2009-07-13 12:20:31 -0700 | [diff] [blame] | 20 | #include "rsUtils.h" | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 21 | #include "rsType.h" | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 22 | #include "rsAllocation.h" | 
| Jason Sams | a89371c | 2009-06-30 14:13:04 -0700 | [diff] [blame] | 23 | #include "rsMesh.h" | 
| Alex Sakhartchouk | 77d9f4b | 2011-01-31 14:53:24 -0800 | [diff] [blame] | 24 |  | 
| Jason Sams | bad8074 | 2011-03-16 16:29:28 -0700 | [diff] [blame] | 25 | #include "rs_hal.h" | 
 | 26 |  | 
| Alex Sakhartchouk | 77d9f4b | 2011-01-31 14:53:24 -0800 | [diff] [blame] | 27 | #include "rsMutex.h" | 
 | 28 | #include "rsThreadIO.h" | 
| Jason Sams | 87fe59a | 2011-04-20 15:09:01 -0700 | [diff] [blame] | 29 | #include "rsMatrix4x4.h" | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 30 | #include "rsDevice.h" | 
 | 31 | #include "rsScriptC.h" | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 32 | #include "rsAdapter.h" | 
 | 33 | #include "rsSampler.h" | 
| Alex Sakhartchouk | d3e0ad4 | 2010-06-24 17:15:34 -0700 | [diff] [blame] | 34 | #include "rsFont.h" | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 35 | #include "rsProgramFragment.h" | 
| Jason Sams | ccc010b | 2010-05-13 18:30:11 -0700 | [diff] [blame] | 36 | #include "rsProgramStore.h" | 
| Jason Sams | 5fd09d8 | 2009-09-23 13:57:02 -0700 | [diff] [blame] | 37 | #include "rsProgramRaster.h" | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 38 | #include "rsProgramVertex.h" | 
| Alex Sakhartchouk | 7d9c5ff | 2011-04-01 14:19:01 -0700 | [diff] [blame] | 39 | #include "rsFBOCache.h" | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 40 |  | 
 | 41 | #include "rsgApiStructs.h" | 
 | 42 | #include "rsLocklessFifo.h" | 
 | 43 |  | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 44 | // --------------------------------------------------------------------------- | 
 | 45 | namespace android { | 
| Mathias Agopian | d4c25e3 | 2010-02-09 17:46:37 -0800 | [diff] [blame] | 46 |  | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 47 | namespace renderscript { | 
 | 48 |  | 
| Jason Sams | 605048a | 2010-09-30 18:15:52 -0700 | [diff] [blame] | 49 | #if 0 | 
 | 50 | #define CHECK_OBJ(o) { \ | 
 | 51 |     GET_TLS(); \ | 
| Alex Sakhartchouk | afb743a | 2010-11-09 17:00:54 -0800 | [diff] [blame] | 52 |     if (!ObjectBase::isValid(rsc, (const ObjectBase *)o)) {  \ | 
| Steve Block | af12ac6 | 2012-01-06 19:20:56 +0000 | [diff] [blame] | 53 |         ALOGE("Bad object %p at %s, %i", o, __FILE__, __LINE__);  \ | 
| Jason Sams | 605048a | 2010-09-30 18:15:52 -0700 | [diff] [blame] | 54 |     } \ | 
 | 55 | } | 
 | 56 | #define CHECK_OBJ_OR_NULL(o) { \ | 
 | 57 |     GET_TLS(); \ | 
| Alex Sakhartchouk | afb743a | 2010-11-09 17:00:54 -0800 | [diff] [blame] | 58 |     if (o && !ObjectBase::isValid(rsc, (const ObjectBase *)o)) {  \ | 
| Steve Block | af12ac6 | 2012-01-06 19:20:56 +0000 | [diff] [blame] | 59 |         ALOGE("Bad object %p at %s, %i", o, __FILE__, __LINE__);  \ | 
| Jason Sams | 605048a | 2010-09-30 18:15:52 -0700 | [diff] [blame] | 60 |     } \ | 
 | 61 | } | 
 | 62 | #else | 
 | 63 | #define CHECK_OBJ(o) | 
 | 64 | #define CHECK_OBJ_OR_NULL(o) | 
 | 65 | #endif | 
 | 66 |  | 
| Alex Sakhartchouk | afb743a | 2010-11-09 17:00:54 -0800 | [diff] [blame] | 67 | class Context { | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 68 | public: | 
| Jason Sams | bad8074 | 2011-03-16 16:29:28 -0700 | [diff] [blame] | 69 |     struct Hal { | 
 | 70 |         void * drv; | 
 | 71 |  | 
 | 72 |         RsdHalFunctions funcs; | 
 | 73 |     }; | 
 | 74 |     Hal mHal; | 
 | 75 |  | 
| Jason Sams | 5c1c79a | 2010-11-03 14:27:11 -0700 | [diff] [blame] | 76 |     static Context * createContext(Device *, const RsSurfaceConfig *sc); | 
| Alex Sakhartchouk | b81a0eb | 2011-06-03 10:18:01 -0700 | [diff] [blame] | 77 |     static Context * createContextLite(); | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 78 |     ~Context(); | 
 | 79 |  | 
| Jason Sams | fb03a22 | 2009-10-15 16:47:31 -0700 | [diff] [blame] | 80 |     static pthread_mutex_t gInitMutex; | 
| Stephen Hines | ca3f09c | 2011-01-07 15:11:30 -0800 | [diff] [blame] | 81 |     // Library mutex (for providing thread-safe calls from the runtime) | 
 | 82 |     static pthread_mutex_t gLibMutex; | 
| Jason Sams | fb03a22 | 2009-10-15 16:47:31 -0700 | [diff] [blame] | 83 |  | 
| Jason Sams | 6070925 | 2010-11-17 15:29:32 -0800 | [diff] [blame] | 84 |     class PushState { | 
 | 85 |     public: | 
 | 86 |         PushState(Context *); | 
 | 87 |         ~PushState(); | 
 | 88 |  | 
 | 89 |     private: | 
 | 90 |         ObjectBaseRef<ProgramFragment> mFragment; | 
 | 91 |         ObjectBaseRef<ProgramVertex> mVertex; | 
 | 92 |         ObjectBaseRef<ProgramStore> mStore; | 
 | 93 |         ObjectBaseRef<ProgramRaster> mRaster; | 
 | 94 |         ObjectBaseRef<Font> mFont; | 
 | 95 |         Context *mRsc; | 
 | 96 |     }; | 
 | 97 |  | 
| Jason Sams | 6b8552a | 2010-10-13 15:31:10 -0700 | [diff] [blame] | 98 |     RsSurfaceConfig mUserSurfaceConfig; | 
| Jason Sams | e576910 | 2009-06-19 16:03:18 -0700 | [diff] [blame] | 99 |  | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 100 |     ElementState mStateElement; | 
 | 101 |     TypeState mStateType; | 
 | 102 |     SamplerState mStateSampler; | 
 | 103 |     ProgramFragmentState mStateFragment; | 
| Jason Sams | ccc010b | 2010-05-13 18:30:11 -0700 | [diff] [blame] | 104 |     ProgramStoreState mStateFragmentStore; | 
| Jason Sams | 5fd09d8 | 2009-09-23 13:57:02 -0700 | [diff] [blame] | 105 |     ProgramRasterState mStateRaster; | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 106 |     ProgramVertexState mStateVertex; | 
| Alex Sakhartchouk | d3e0ad4 | 2010-06-24 17:15:34 -0700 | [diff] [blame] | 107 |     FontState mStateFont; | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 108 |  | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 109 |     ScriptCState mScriptC; | 
| Alex Sakhartchouk | 7d9c5ff | 2011-04-01 14:19:01 -0700 | [diff] [blame] | 110 |     FBOCache mFBOCache; | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 111 |  | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 112 |     void swapBuffers(); | 
 | 113 |     void setRootScript(Script *); | 
| Jason Sams | 6070925 | 2010-11-17 15:29:32 -0800 | [diff] [blame] | 114 |     void setProgramRaster(ProgramRaster *); | 
 | 115 |     void setProgramVertex(ProgramVertex *); | 
 | 116 |     void setProgramFragment(ProgramFragment *); | 
 | 117 |     void setProgramStore(ProgramStore *); | 
| Alex Sakhartchouk | d3e0ad4 | 2010-06-24 17:15:34 -0700 | [diff] [blame] | 118 |     void setFont(Font *); | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 119 |  | 
 | 120 |     void updateSurface(void *sur); | 
 | 121 |  | 
| Jason Sams | 6070925 | 2010-11-17 15:29:32 -0800 | [diff] [blame] | 122 |     ProgramFragment * getProgramFragment() {return mFragment.get();} | 
 | 123 |     ProgramStore * getProgramStore() {return mFragmentStore.get();} | 
 | 124 |     ProgramRaster * getProgramRaster() {return mRaster.get();} | 
 | 125 |     ProgramVertex * getProgramVertex() {return mVertex.get();} | 
| Alex Sakhartchouk | d3e0ad4 | 2010-06-24 17:15:34 -0700 | [diff] [blame] | 126 |     Font * getFont() {return mFont.get();} | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 127 |  | 
| Jason Sams | a2cf755 | 2010-03-03 13:03:18 -0800 | [diff] [blame] | 128 |     bool setupCheck(); | 
| Alex Sakhartchouk | 889fe50 | 2010-10-01 10:54:06 -0700 | [diff] [blame] | 129 |     void setupProgramStore(); | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 130 |  | 
| Jason Sams | 86f1b23 | 2009-09-24 17:38:20 -0700 | [diff] [blame] | 131 |     void pause(); | 
 | 132 |     void resume(); | 
| Alex Sakhartchouk | 7257c7e | 2011-05-17 12:32:47 -0700 | [diff] [blame] | 133 |     void setSurface(uint32_t w, uint32_t h, RsNativeWindow sur); | 
| Jason Sams | 1583244 | 2009-11-15 12:14:26 -0800 | [diff] [blame] | 134 |     void setPriority(int32_t p); | 
| Jason Sams | 741aac9 | 2010-12-24 14:38:39 -0800 | [diff] [blame] | 135 |     void destroyWorkerThreadResources(); | 
| Jason Sams | 86f1b23 | 2009-09-24 17:38:20 -0700 | [diff] [blame] | 136 |  | 
| Jason Sams | a4a54e4 | 2009-06-10 18:39:40 -0700 | [diff] [blame] | 137 |     void assignName(ObjectBase *obj, const char *name, uint32_t len); | 
| Jason Sams | a0a1b6f | 2009-06-10 15:04:38 -0700 | [diff] [blame] | 138 |     void removeName(ObjectBase *obj); | 
| Jason Sams | 8ce125b | 2009-06-17 16:52:59 -0700 | [diff] [blame] | 139 |  | 
| Jason Sams | 1a4efa3 | 2011-05-17 15:01:29 -0700 | [diff] [blame] | 140 |     RsMessageToClientType peekMessageToClient(size_t *receiveLen, uint32_t *subID); | 
 | 141 |     RsMessageToClientType getMessageToClient(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen); | 
| Jason Sams | 87319de | 2010-11-22 16:20:16 -0800 | [diff] [blame] | 142 |     bool sendMessageToClient(const void *data, RsMessageToClientType cmdID, uint32_t subID, size_t len, bool waitForSpace) const; | 
| Jason Sams | c61346b | 2010-05-28 18:23:22 -0700 | [diff] [blame] | 143 |     uint32_t runScript(Script *s); | 
| Jason Sams | 8c401ef | 2009-10-06 13:58:47 -0700 | [diff] [blame] | 144 |  | 
 | 145 |     void initToClient(); | 
 | 146 |     void deinitToClient(); | 
 | 147 |  | 
| Jason Sams | 8ce125b | 2009-06-17 16:52:59 -0700 | [diff] [blame] | 148 |     ProgramFragment * getDefaultProgramFragment() const { | 
 | 149 |         return mStateFragment.mDefault.get(); | 
 | 150 |     } | 
 | 151 |     ProgramVertex * getDefaultProgramVertex() const { | 
 | 152 |         return mStateVertex.mDefault.get(); | 
 | 153 |     } | 
| Jason Sams | ccc010b | 2010-05-13 18:30:11 -0700 | [diff] [blame] | 154 |     ProgramStore * getDefaultProgramStore() const { | 
| Jason Sams | 8ce125b | 2009-06-17 16:52:59 -0700 | [diff] [blame] | 155 |         return mStateFragmentStore.mDefault.get(); | 
 | 156 |     } | 
| Jason Sams | 5fd09d8 | 2009-09-23 13:57:02 -0700 | [diff] [blame] | 157 |     ProgramRaster * getDefaultProgramRaster() const { | 
 | 158 |         return mStateRaster.mDefault.get(); | 
 | 159 |     } | 
| Alex Sakhartchouk | d3e0ad4 | 2010-06-24 17:15:34 -0700 | [diff] [blame] | 160 |     Font* getDefaultFont() const { | 
 | 161 |         return mStateFont.mDefault.get(); | 
 | 162 |     } | 
| Jason Sams | 8ce125b | 2009-06-17 16:52:59 -0700 | [diff] [blame] | 163 |  | 
| Jason Sams | 771565f | 2010-05-14 15:30:29 -0700 | [diff] [blame] | 164 |     uint32_t getWidth() const {return mWidth;} | 
 | 165 |     uint32_t getHeight() const {return mHeight;} | 
| Jason Sams | e579df4 | 2009-08-10 14:55:26 -0700 | [diff] [blame] | 166 |  | 
| Alex Sakhartchouk | a74a8f6 | 2011-11-16 12:22:10 -0800 | [diff] [blame] | 167 |     uint32_t getCurrentSurfaceWidth() const; | 
 | 168 |     uint32_t getCurrentSurfaceHeight() const; | 
 | 169 |  | 
| Jason Sams | 87319de | 2010-11-22 16:20:16 -0800 | [diff] [blame] | 170 |     mutable ThreadIO mIO; | 
| Jason Sams | fcd3192 | 2009-08-17 18:35:48 -0700 | [diff] [blame] | 171 |  | 
| Jason Sams | 24371d9 | 2009-08-19 12:17:14 -0700 | [diff] [blame] | 172 |     // Timers | 
 | 173 |     enum Timers { | 
 | 174 |         RS_TIMER_IDLE, | 
 | 175 |         RS_TIMER_INTERNAL, | 
 | 176 |         RS_TIMER_SCRIPT, | 
 | 177 |         RS_TIMER_CLEAR_SWAP, | 
 | 178 |         _RS_TIMER_TOTAL | 
 | 179 |     }; | 
 | 180 |     uint64_t getTime() const; | 
 | 181 |     void timerInit(); | 
 | 182 |     void timerReset(); | 
 | 183 |     void timerSet(Timers); | 
 | 184 |     void timerPrint(); | 
| Jason Sams | 1d54f10 | 2009-09-03 15:43:13 -0700 | [diff] [blame] | 185 |     void timerFrame(); | 
| Jason Sams | 24371d9 | 2009-08-19 12:17:14 -0700 | [diff] [blame] | 186 |  | 
| Jason Sams | 1fddd90 | 2009-09-25 15:25:00 -0700 | [diff] [blame] | 187 |     struct { | 
 | 188 |         bool mLogTimes; | 
 | 189 |         bool mLogScripts; | 
 | 190 |         bool mLogObjects; | 
| Jason Sams | cd50653 | 2009-12-15 19:10:11 -0800 | [diff] [blame] | 191 |         bool mLogShaders; | 
| Alex Sakhartchouk | 886f11a | 2010-09-29 09:49:13 -0700 | [diff] [blame] | 192 |         bool mLogShadersAttr; | 
 | 193 |         bool mLogShadersUniforms; | 
| Alex Sakhartchouk | 0cae59f | 2010-08-03 12:03:16 -0700 | [diff] [blame] | 194 |         bool mLogVisual; | 
| Jason Sams | 1fddd90 | 2009-09-25 15:25:00 -0700 | [diff] [blame] | 195 |     } props; | 
| Joe Onorato | 76371ff | 2009-09-23 16:37:36 -0700 | [diff] [blame] | 196 |  | 
| Jason Sams | 2382aba | 2011-09-13 15:41:01 -0700 | [diff] [blame] | 197 |     mutable struct { | 
 | 198 |         bool inRoot; | 
 | 199 |         const char *command; | 
 | 200 |         const char *file; | 
 | 201 |         uint32_t line; | 
 | 202 |     } watchdog; | 
 | 203 |     static void printWatchdogInfo(void *ctx); | 
 | 204 |     void setWatchdogGL(const char *cmd, uint32_t line, const char *file) const { | 
 | 205 |         watchdog.command = cmd; | 
 | 206 |         watchdog.file = file; | 
 | 207 |         watchdog.line = line; | 
 | 208 |     } | 
 | 209 |  | 
| Jason Sams | 13e2634 | 2009-11-24 12:26:35 -0800 | [diff] [blame] | 210 |     void dumpDebug() const; | 
| Jason Sams | 87319de | 2010-11-22 16:20:16 -0800 | [diff] [blame] | 211 |     void setError(RsError e, const char *msg = NULL) const; | 
| Jason Sams | 13e2634 | 2009-11-24 12:26:35 -0800 | [diff] [blame] | 212 |  | 
| Jason Sams | e514b45 | 2009-09-25 14:51:22 -0700 | [diff] [blame] | 213 |     mutable const ObjectBase * mObjHead; | 
 | 214 |  | 
| Alex Sakhartchouk | 7b3e9bd | 2011-03-16 19:28:25 -0700 | [diff] [blame] | 215 |     uint32_t getDPI() const {return mDPI;} | 
 | 216 |     void setDPI(uint32_t dpi) {mDPI = dpi;} | 
| Jason Sams | 7bf29dd | 2010-07-19 15:38:19 -0700 | [diff] [blame] | 217 |  | 
| Stephen Hines | cbb0b8a | 2011-08-01 15:02:34 -0700 | [diff] [blame] | 218 |     uint32_t getTargetSdkVersion() const {return mTargetSdkVersion;} | 
 | 219 |     void setTargetSdkVersion(uint32_t sdkVer) {mTargetSdkVersion = sdkVer;} | 
 | 220 |  | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 221 |     Device *mDev; | 
| Jason Sams | 4b3de47 | 2011-04-06 17:52:23 -0700 | [diff] [blame] | 222 | protected: | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 223 |  | 
| Stephen Hines | cbb0b8a | 2011-08-01 15:02:34 -0700 | [diff] [blame] | 224 |     uint32_t mTargetSdkVersion; | 
| Alex Sakhartchouk | 7b3e9bd | 2011-03-16 19:28:25 -0700 | [diff] [blame] | 225 |     uint32_t mDPI; | 
| Jason Sams | 613cad1 | 2009-11-12 15:10:25 -0800 | [diff] [blame] | 226 |     uint32_t mWidth; | 
 | 227 |     uint32_t mHeight; | 
| Jason Sams | 2dca84d | 2009-12-09 11:05:45 -0800 | [diff] [blame] | 228 |     int32_t mThreadPriority; | 
| Jason Sams | 4820e8b | 2010-02-09 16:05:07 -0800 | [diff] [blame] | 229 |     bool mIsGraphicsContext; | 
| Jason Sams | 613cad1 | 2009-11-12 15:10:25 -0800 | [diff] [blame] | 230 |  | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 231 |     bool mRunning; | 
 | 232 |     bool mExit; | 
| Jason Sams | 86f1b23 | 2009-09-24 17:38:20 -0700 | [diff] [blame] | 233 |     bool mPaused; | 
| Jason Sams | 87319de | 2010-11-22 16:20:16 -0800 | [diff] [blame] | 234 |     mutable RsError mError; | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 235 |  | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 236 |     pthread_t mThreadId; | 
| Jason Sams | 1583244 | 2009-11-15 12:14:26 -0800 | [diff] [blame] | 237 |     pid_t mNativeThreadId; | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 238 |  | 
 | 239 |     ObjectBaseRef<Script> mRootScript; | 
 | 240 |     ObjectBaseRef<ProgramFragment> mFragment; | 
 | 241 |     ObjectBaseRef<ProgramVertex> mVertex; | 
| Jason Sams | ccc010b | 2010-05-13 18:30:11 -0700 | [diff] [blame] | 242 |     ObjectBaseRef<ProgramStore> mFragmentStore; | 
| Jason Sams | 5fd09d8 | 2009-09-23 13:57:02 -0700 | [diff] [blame] | 243 |     ObjectBaseRef<ProgramRaster> mRaster; | 
| Alex Sakhartchouk | d3e0ad4 | 2010-06-24 17:15:34 -0700 | [diff] [blame] | 244 |     ObjectBaseRef<Font> mFont; | 
| Jason Sams | 5086938 | 2009-08-18 17:07:09 -0700 | [diff] [blame] | 245 |  | 
| Alex Sakhartchouk | 0cae59f | 2010-08-03 12:03:16 -0700 | [diff] [blame] | 246 |     void displayDebugStats(); | 
 | 247 |  | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 248 | private: | 
 | 249 |     Context(); | 
| Jason Sams | 5c1c79a | 2010-11-03 14:27:11 -0700 | [diff] [blame] | 250 |     bool initContext(Device *, const RsSurfaceConfig *sc); | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 251 |  | 
| Jason Sams | 5c1c79a | 2010-11-03 14:27:11 -0700 | [diff] [blame] | 252 |  | 
 | 253 |     bool initGLThread(); | 
| Jason Sams | 33b6e3b | 2009-10-27 14:44:31 -0700 | [diff] [blame] | 254 |     void deinitEGL(); | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 255 |  | 
| Jason Sams | 2dca84d | 2009-12-09 11:05:45 -0800 | [diff] [blame] | 256 |     uint32_t runRootScript(); | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 257 |  | 
 | 258 |     static void * threadProc(void *); | 
| Jason Sams | 7bf29dd | 2010-07-19 15:38:19 -0700 | [diff] [blame] | 259 |     static void * helperThreadProc(void *); | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 260 |  | 
| Alex Sakhartchouk | 7257c7e | 2011-05-17 12:32:47 -0700 | [diff] [blame] | 261 |     bool mHasSurface; | 
| Alex Sakhartchouk | b81a0eb | 2011-06-03 10:18:01 -0700 | [diff] [blame] | 262 |     bool mIsContextLite; | 
| Jason Sams | a0a1b6f | 2009-06-10 15:04:38 -0700 | [diff] [blame] | 263 |  | 
 | 264 |     Vector<ObjectBase *> mNames; | 
| Jason Sams | 24371d9 | 2009-08-19 12:17:14 -0700 | [diff] [blame] | 265 |  | 
 | 266 |     uint64_t mTimers[_RS_TIMER_TOTAL]; | 
 | 267 |     Timers mTimerActive; | 
 | 268 |     uint64_t mTimeLast; | 
| Jason Sams | 1d54f10 | 2009-09-03 15:43:13 -0700 | [diff] [blame] | 269 |     uint64_t mTimeFrame; | 
 | 270 |     uint64_t mTimeLastFrame; | 
| Jason Sams | 2dca84d | 2009-12-09 11:05:45 -0800 | [diff] [blame] | 271 |     uint32_t mTimeMSLastFrame; | 
 | 272 |     uint32_t mTimeMSLastScript; | 
 | 273 |     uint32_t mTimeMSLastSwap; | 
| Alex Sakhartchouk | c8fb69e | 2010-10-05 13:23:55 -0700 | [diff] [blame] | 274 |     uint32_t mAverageFPSFrameCount; | 
 | 275 |     uint64_t mAverageFPSStartTime; | 
 | 276 |     uint32_t mAverageFPS; | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 277 | }; | 
 | 278 |  | 
| Alex Sakhartchouk | 77d9f4b | 2011-01-31 14:53:24 -0800 | [diff] [blame] | 279 | } // renderscript | 
 | 280 | } // android | 
| Jason Sams | 326e0dd | 2009-05-22 14:03:28 -0700 | [diff] [blame] | 281 | #endif |