rsContext.h revision 54db59c3594e887a412a24713fc3daa1c2404593
1d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams/* 2d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Copyright (C) 2009 The Android Open Source Project 3d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 4d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * you may not use this file except in compliance with the License. 6d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * You may obtain a copy of the License at 7d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 8d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 10d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Unless required by applicable law or agreed to in writing, software 11d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * See the License for the specific language governing permissions and 14d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * limitations under the License. 15d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams */ 16d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 17d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#ifndef ANDROID_RS_CONTEXT_H 18d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define ANDROID_RS_CONTEXT_H 19d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 20399bfce299210ef9c2fc1e932202223253e2384aJason Sams#include "rsUtils.h" 21c1d726c2d62424867ec14f2cde16b00fe0ddfee1Jason Sams#include "rsMutex.h" 22399bfce299210ef9c2fc1e932202223253e2384aJason Sams 23bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams#include "rsThreadIO.h" 24d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsType.h" 25d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsMatrix.h" 26d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsAllocation.h" 271bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams#include "rsSimpleMesh.h" 287c878f3a8379daf21dca6de7aa722ff75328afbeJason Sams#include "rsMesh.h" 29d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsDevice.h" 30d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsScriptC.h" 31d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsAllocation.h" 32d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsAdapter.h" 33d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsSampler.h" 34ee41112e1539de95596600fd2c6dada5d275217fJason Sams#include "rsLight.h" 35d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsProgramFragment.h" 3654db59c3594e887a412a24713fc3daa1c2404593Jason Sams#include "rsProgramStore.h" 37ebfb436a49673693b98469683451bd9ede797557Jason Sams#include "rsProgramRaster.h" 38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsProgramVertex.h" 39bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9Jason Sams#include "rsShaderCache.h" 40bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9Jason Sams#include "rsVertexArray.h" 41d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 42d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsgApiStructs.h" 43d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsLocklessFifo.h" 44d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 455cbb940cf6b1fd2b44d66bc40e5c3e8429bbd741Mathias Agopian#include <ui/egl/android_natives.h> 46d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 47d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 48d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace android { 49000479f9e325b4e426a67033abd92d47da412725Mathias Agopian 50d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace renderscript { 51d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 529bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason Samsclass Context 53d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 54d19f10d43aa400e1183aa21a97099d02074131a2Jason Samspublic: 55704ff64b099406bb328898a7443921f22dbffd6dJason Sams Context(Device *, bool isGraphics, bool useDepth); 56d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ~Context(); 57d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 58462d11b880cba72584c135397c0a82618ab63217Jason Sams static pthread_key_t gThreadTLSKey; 5941c19db90e250e2b7cb438904f0e96a0ef455d6dJason Sams static uint32_t gThreadTLSKeyCount; 607136220b54e68e0c7faac30577ed20b7482481fdJason Sams static uint32_t gGLContextCount; 6141c19db90e250e2b7cb438904f0e96a0ef455d6dJason Sams static pthread_mutex_t gInitMutex; 6241c19db90e250e2b7cb438904f0e96a0ef455d6dJason Sams 63462d11b880cba72584c135397c0a82618ab63217Jason Sams struct ScriptTLSStruct { 64462d11b880cba72584c135397c0a82618ab63217Jason Sams Context * mContext; 65462d11b880cba72584c135397c0a82618ab63217Jason Sams Script * mScript; 66462d11b880cba72584c135397c0a82618ab63217Jason Sams }; 67462d11b880cba72584c135397c0a82618ab63217Jason Sams 68d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 69d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams //StructuredAllocationContext mStateAllocation; 70d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ElementState mStateElement; 71d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams TypeState mStateType; 72d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams SamplerState mStateSampler; 73d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ProgramFragmentState mStateFragment; 7454db59c3594e887a412a24713fc3daa1c2404593Jason Sams ProgramStoreState mStateFragmentStore; 75ebfb436a49673693b98469683451bd9ede797557Jason Sams ProgramRasterState mStateRaster; 76d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ProgramVertexState mStateVertex; 77bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams LightState mStateLight; 78bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9Jason Sams VertexArrayState mStateVertexArray; 79d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 80d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ScriptCState mScriptC; 81bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9Jason Sams ShaderCache mShaderCache; 82d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 83d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams void swapBuffers(); 84d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams void setRootScript(Script *); 85ebfb436a49673693b98469683451bd9ede797557Jason Sams void setRaster(ProgramRaster *); 86d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams void setVertex(ProgramVertex *); 87d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams void setFragment(ProgramFragment *); 8854db59c3594e887a412a24713fc3daa1c2404593Jason Sams void setFragmentStore(ProgramStore *); 89d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 90d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams void updateSurface(void *sur); 91d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 92d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams const ProgramFragment * getFragment() {return mFragment.get();} 9354db59c3594e887a412a24713fc3daa1c2404593Jason Sams const ProgramStore * getFragmentStore() {return mFragmentStore.get();} 94ebfb436a49673693b98469683451bd9ede797557Jason Sams const ProgramRaster * getRaster() {return mRaster.get();} 95b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams const ProgramVertex * getVertex() {return mVertex.get();} 96d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 97156cce698093023d9e79a4ff4fb96f4e4d3019dbJason Sams bool setupCheck(); 983b7d39bb51f851ddee441fa34884495217e477f9Jason Sams bool checkDriver() const {return mEGL.mSurface != 0;} 99d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 10065e7aa56f56097418d617663683544c25b3988eaJason Sams void pause(); 10165e7aa56f56097418d617663683544c25b3988eaJason Sams void resume(); 1025cbb940cf6b1fd2b44d66bc40e5c3e8429bbd741Mathias Agopian void setSurface(uint32_t w, uint32_t h, android_native_window_t *sur); 1037d787b4722eaeb79cab42c36060336e092b77b5fJason Sams void setPriority(int32_t p); 10465e7aa56f56097418d617663683544c25b3988eaJason Sams 105d5680f9ba95ec7ce212e8025774914e79982a1eeJason Sams void assignName(ObjectBase *obj, const char *name, uint32_t len); 1063eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams void removeName(ObjectBase *obj); 1079c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams 108516c31911578db8ce53529483c3ded918ac7dc6bJason Sams uint32_t getMessageToClient(void *data, size_t *receiveLen, size_t bufferLen, bool wait); 109516c31911578db8ce53529483c3ded918ac7dc6bJason Sams bool sendMessageToClient(void *data, uint32_t cmdID, size_t len, bool waitForSpace); 110b9d5c574ff11a9470b92c5b9a62da6a655d9ef7aJason Sams uint32_t runScript(Script *s, uint32_t launchID); 111516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 112516c31911578db8ce53529483c3ded918ac7dc6bJason Sams void initToClient(); 113516c31911578db8ce53529483c3ded918ac7dc6bJason Sams void deinitToClient(); 114516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 1159c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams ProgramFragment * getDefaultProgramFragment() const { 1169c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams return mStateFragment.mDefault.get(); 1179c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams } 1189c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams ProgramVertex * getDefaultProgramVertex() const { 1199c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams return mStateVertex.mDefault.get(); 1209c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams } 12154db59c3594e887a412a24713fc3daa1c2404593Jason Sams ProgramStore * getDefaultProgramStore() const { 1229c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams return mStateFragmentStore.mDefault.get(); 1239c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams } 124ebfb436a49673693b98469683451bd9ede797557Jason Sams ProgramRaster * getDefaultProgramRaster() const { 125ebfb436a49673693b98469683451bd9ede797557Jason Sams return mStateRaster.mDefault.get(); 126ebfb436a49673693b98469683451bd9ede797557Jason Sams } 1279c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams 128b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams uint32_t getWidth() const {return mEGL.mWidth;} 129b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams uint32_t getHeight() const {return mEGL.mHeight;} 13040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 131bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams 132bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams ThreadIO mIO; 133730ee65d4ddb307898053b623120bad1655fadadJason Sams void objDestroyAdd(ObjectBase *); 134bc948dedcee57a66fe2cb38d4c79d04a10c7efb3Jason Sams 135f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams // Timers 136f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams enum Timers { 137f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams RS_TIMER_IDLE, 138f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams RS_TIMER_INTERNAL, 139f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams RS_TIMER_SCRIPT, 140f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams RS_TIMER_CLEAR_SWAP, 141f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams _RS_TIMER_TOTAL 142f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams }; 143f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams uint64_t getTime() const; 144f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams void timerInit(); 145f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams void timerReset(); 146f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams void timerSet(Timers); 147f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams void timerPrint(); 1482525a815220652b37e2e390fe8c62394a6d0e574Jason Sams void timerFrame(); 149f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams 150b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams bool checkVersion1_1() const {return (mGL.mMajorVersion > 1) || (mGL.mMinorVersion >= 1); } 151b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams bool checkVersion2_0() const {return mGL.mMajorVersion >= 2; } 152b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams 15366b2771d745aa66df5cf80b300b5ba0f936ff22eJason Sams struct { 15466b2771d745aa66df5cf80b300b5ba0f936ff22eJason Sams bool mLogTimes; 15566b2771d745aa66df5cf80b300b5ba0f936ff22eJason Sams bool mLogScripts; 15666b2771d745aa66df5cf80b300b5ba0f936ff22eJason Sams bool mLogObjects; 1575dad8b4d1fda37b7b4763ef7361c5eb92131cb7eJason Sams bool mLogShaders; 15866b2771d745aa66df5cf80b300b5ba0f936ff22eJason Sams } props; 1599ac2c66f0171593113238635c6a7921c41215e77Joe Onorato 1609dab667e03632181e487a04a8a170b3fa0bd5037Jason Sams void dumpDebug() const; 161718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams void checkError(const char *) const; 162156cce698093023d9e79a4ff4fb96f4e4d3019dbJason Sams const char * getError(RsError *); 163f468700b6dd02cf68d4424567a8288a24084f51aJason Sams void setError(RsError e, const char *msg = NULL); 1649dab667e03632181e487a04a8a170b3fa0bd5037Jason Sams 165a9e7a05b84470257637c97d65f6562aa832c66efJason Sams mutable const ObjectBase * mObjHead; 166a9e7a05b84470257637c97d65f6562aa832c66efJason Sams 1672978bfc6ad79c8f1138d34a704ce5b3d3d70d2c1Jason Sams bool ext_OES_texture_npot() const {return mGL.OES_texture_npot;} 1682978bfc6ad79c8f1138d34a704ce5b3d3d70d2c1Jason Sams 169d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsprotected: 170d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams Device *mDev; 171d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 172b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams struct { 173b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams EGLint mNumConfigs; 174b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams EGLint mMajorVersion; 175b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams EGLint mMinorVersion; 176b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams EGLConfig mConfig; 177b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams EGLContext mContext; 178b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams EGLSurface mSurface; 179b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams EGLint mWidth; 180b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams EGLint mHeight; 181b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams EGLDisplay mDisplay; 182b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams } mEGL; 183b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams 184b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams struct { 185b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams const uint8_t * mVendor; 186b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams const uint8_t * mRenderer; 187b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams const uint8_t * mVersion; 188b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams const uint8_t * mExtensions; 189b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams 190b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams uint32_t mMajorVersion; 191b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams uint32_t mMinorVersion; 192b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams 1930011bcf57ff711a221a3a4c73f2a79125111647dJason Sams int32_t mMaxVaryingVectors; 1940011bcf57ff711a221a3a4c73f2a79125111647dJason Sams int32_t mMaxTextureImageUnits; 1950011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 1960011bcf57ff711a221a3a4c73f2a79125111647dJason Sams int32_t mMaxFragmentTextureImageUnits; 1970011bcf57ff711a221a3a4c73f2a79125111647dJason Sams int32_t mMaxFragmentUniformVectors; 1980011bcf57ff711a221a3a4c73f2a79125111647dJason Sams 1990011bcf57ff711a221a3a4c73f2a79125111647dJason Sams int32_t mMaxVertexAttribs; 2000011bcf57ff711a221a3a4c73f2a79125111647dJason Sams int32_t mMaxVertexUniformVectors; 2010011bcf57ff711a221a3a4c73f2a79125111647dJason Sams int32_t mMaxVertexTextureUnits; 2022978bfc6ad79c8f1138d34a704ce5b3d3d70d2c1Jason Sams 2032978bfc6ad79c8f1138d34a704ce5b3d3d70d2c1Jason Sams bool OES_texture_npot; 204b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams } mGL; 205d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 2063bc47d438171dce294e816366d53bc9eca772c5bJason Sams uint32_t mWidth; 2073bc47d438171dce294e816366d53bc9eca772c5bJason Sams uint32_t mHeight; 208b9d5c574ff11a9470b92c5b9a62da6a655d9ef7aJason Sams int32_t mThreadPriority; 209704ff64b099406bb328898a7443921f22dbffd6dJason Sams bool mIsGraphicsContext; 2103bc47d438171dce294e816366d53bc9eca772c5bJason Sams 211d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams bool mRunning; 212d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams bool mExit; 213b13ada5071f55c96054c47bbd88d8801cd2c0f15Jason Sams bool mUseDepth; 21465e7aa56f56097418d617663683544c25b3988eaJason Sams bool mPaused; 215156cce698093023d9e79a4ff4fb96f4e4d3019dbJason Sams RsError mError; 216156cce698093023d9e79a4ff4fb96f4e4d3019dbJason Sams const char *mErrorMsg; 217d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 218d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams pthread_t mThreadId; 2197d787b4722eaeb79cab42c36060336e092b77b5fJason Sams pid_t mNativeThreadId; 220d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 221d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ObjectBaseRef<Script> mRootScript; 222d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ObjectBaseRef<ProgramFragment> mFragment; 223d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ObjectBaseRef<ProgramVertex> mVertex; 22454db59c3594e887a412a24713fc3daa1c2404593Jason Sams ObjectBaseRef<ProgramStore> mFragmentStore; 225ebfb436a49673693b98469683451bd9ede797557Jason Sams ObjectBaseRef<ProgramRaster> mRaster; 226d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 227730ee65d4ddb307898053b623120bad1655fadadJason Sams 228730ee65d4ddb307898053b623120bad1655fadadJason Sams struct ObjDestroyOOB { 229c1d726c2d62424867ec14f2cde16b00fe0ddfee1Jason Sams Mutex mMutex; 230730ee65d4ddb307898053b623120bad1655fadadJason Sams Vector<ObjectBase *> mDestroyList; 231730ee65d4ddb307898053b623120bad1655fadadJason Sams bool mNeedToEmpty; 232730ee65d4ddb307898053b623120bad1655fadadJason Sams }; 233730ee65d4ddb307898053b623120bad1655fadadJason Sams ObjDestroyOOB mObjDestroy; 234730ee65d4ddb307898053b623120bad1655fadadJason Sams bool objDestroyOOBInit(); 235730ee65d4ddb307898053b623120bad1655fadadJason Sams void objDestroyOOBRun(); 236730ee65d4ddb307898053b623120bad1655fadadJason Sams void objDestroyOOBDestroy(); 237730ee65d4ddb307898053b623120bad1655fadadJason Sams 238d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsprivate: 239d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams Context(); 240d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 241bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9Jason Sams void initEGL(bool useGL2); 2427136220b54e68e0c7faac30577ed20b7482481fdJason Sams void deinitEGL(); 243d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 244b9d5c574ff11a9470b92c5b9a62da6a655d9ef7aJason Sams uint32_t runRootScript(); 245d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 246d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams static void * threadProc(void *); 247d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 2485cbb940cf6b1fd2b44d66bc40e5c3e8429bbd741Mathias Agopian android_native_window_t *mWndSurface; 2493eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams 2503eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams Vector<ObjectBase *> mNames; 251f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams 252f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams uint64_t mTimers[_RS_TIMER_TOTAL]; 253f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams Timers mTimerActive; 254f4d160653fe405eba9d6f55448ac4599c6cadd77Jason Sams uint64_t mTimeLast; 2552525a815220652b37e2e390fe8c62394a6d0e574Jason Sams uint64_t mTimeFrame; 2562525a815220652b37e2e390fe8c62394a6d0e574Jason Sams uint64_t mTimeLastFrame; 257b9d5c574ff11a9470b92c5b9a62da6a655d9ef7aJason Sams uint32_t mTimeMSLastFrame; 258b9d5c574ff11a9470b92c5b9a62da6a655d9ef7aJason Sams uint32_t mTimeMSLastScript; 259b9d5c574ff11a9470b92c5b9a62da6a655d9ef7aJason Sams uint32_t mTimeMSLastSwap; 260d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 261d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 262d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 263d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 264d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#endif 265