Loading libs/rs/rsContext.cpp +1 −20 Original line number Diff line number Diff line Loading @@ -37,13 +37,9 @@ void Context::initEGL() EGL_NONE }; LOGE("EGL 1"); mDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY); LOGE("EGL 2 %p", mDisplay); eglInitialize(mDisplay, &mMajorVersion, &mMinorVersion); LOGE("EGL 3 %i %i", mMajorVersion, mMinorVersion); eglChooseConfig(mDisplay, s_configAttribs, &mConfig, 1, &mNumConfigs); LOGE("EGL 4 %p", mConfig); if (mWndSurface) { mSurface = eglCreateWindowSurface(mDisplay, mConfig, Loading @@ -55,13 +51,10 @@ void Context::initEGL() NULL); } LOGE("EGL 5"); mContext = eglCreateContext(mDisplay, mConfig, NULL, NULL); eglMakeCurrent(mDisplay, mSurface, mSurface, mContext); eglQuerySurface(mDisplay, mSurface, EGL_WIDTH, &mWidth); eglQuerySurface(mDisplay, mSurface, EGL_HEIGHT, &mHeight); LOGE("EGL 9"); } bool Context::runRootScript() Loading Loading @@ -123,16 +116,11 @@ void * Context::threadProc(void *vrsc) { Context *rsc = static_cast<Context *>(vrsc); LOGE("TP 1"); gIO = new ThreadIO(); rsc->mServerCommands.init(128); rsc->mServerReturns.init(128); rsc->initEGL(); LOGE("TP 2"); rsc->mRunning = true; bool mDraw = true; while (!rsc->mExit) { Loading @@ -149,7 +137,6 @@ void * Context::threadProc(void *vrsc) } } LOGE("TP 6"); glClearColor(0,0,0,0); glClear(GL_COLOR_BUFFER_BIT); eglSwapBuffers(rsc->mDisplay, rsc->mSurface); Loading @@ -159,7 +146,6 @@ void * Context::threadProc(void *vrsc) Context::Context(Device *dev, Surface *sur) { LOGE("CC 1"); dev->addContext(this); mDev = dev; mRunning = false; Loading @@ -171,7 +157,6 @@ Context::Context(Device *dev, Surface *sur) // see comment in header gCon = this; LOGE("CC 2"); int status; pthread_attr_t threadAttr; Loading @@ -185,17 +170,16 @@ Context::Context(Device *dev, Surface *sur) sparam.sched_priority = ANDROID_PRIORITY_DISPLAY; pthread_attr_setschedparam(&threadAttr, &sparam); LOGE("RS Launching thread"); status = pthread_create(&mThreadId, &threadAttr, threadProc, this); if (status) { LOGE("Failed to start rs context thread."); } LOGE("CC 3"); mWndSurface = sur; while(!mRunning) { sleep(1); } LOGE("CC 4"); pthread_attr_destroy(&threadAttr); } Loading @@ -205,14 +189,11 @@ Context::~Context() mExit = true; void *res; LOGE("DES 1"); int status = pthread_join(mThreadId, &res); LOGE("DES 2"); if (mDev) { mDev->removeContext(this); } LOGE("DES 3"); } void Context::swapBuffers() Loading libs/rs/rsScriptC.cpp +35 −44 Original line number Diff line number Diff line Loading @@ -27,9 +27,7 @@ using namespace android::renderscript; ScriptC::ScriptC() { mAccScript = NULL; mScript = NULL; mScriptText = NULL; mScriptTextLength = 0; memset(&mProgram, 0, sizeof(mProgram)); } ScriptC::~ScriptC() Loading Loading @@ -392,7 +390,7 @@ static rsc_FunctionTable scriptCPtrTable = { bool ScriptC::run(Context *rsc, uint32_t launchID) { Env e = {rsc, this}; return mScript(&e, &scriptCPtrTable, launchID) != 0; return mProgram.mScript(&e, &scriptCPtrTable, launchID) != 0; } ScriptCState::ScriptCState() Loading @@ -409,32 +407,33 @@ ScriptCState::~ScriptCState() void ScriptCState::clear() { memset(&mProgram, 0, sizeof(mProgram)); mConstantBufferTypes.clear(); mClearColor[0] = 0; mClearColor[1] = 0; mClearColor[2] = 0; mClearColor[3] = 1; mClearDepth = 1; mClearStencil = 0; memset(&mEnviroment, 0, sizeof(mEnviroment)); mEnviroment.mClearColor[0] = 0; mEnviroment.mClearColor[1] = 0; mEnviroment.mClearColor[2] = 0; mEnviroment.mClearColor[3] = 1; mEnviroment.mClearDepth = 1; mEnviroment.mClearStencil = 0; mEnviroment.mIsRoot = false; mEnviroment.mIsOrtho = true; mAccScript = NULL; mScript = NULL; mIsRoot = false; mIsOrtho = true; mScriptText = NULL; mScriptTextLength = 0; } void ScriptCState::runCompiler() { mAccScript = accCreateScript(); LOGE("Compiler 1"); const char* scriptSource[] = {mScriptText}; int scriptLength[] = {mScriptTextLength} ; const char* scriptSource[] = {mProgram.mScriptText}; int scriptLength[] = {mProgram.mScriptTextLength} ; accScriptSource(mAccScript, 1, scriptSource, scriptLength); accCompileScript(mAccScript); accGetScriptLabel(mAccScript, "main", (ACCvoid**) &mScript); LOGE("Compiler 1"); accGetScriptLabel(mAccScript, "main", (ACCvoid**) &mProgram.mScript); } namespace android { Loading @@ -449,22 +448,22 @@ void rsi_ScriptCBegin(Context * rsc) void rsi_ScriptCSetClearColor(Context * rsc, float r, float g, float b, float a) { ScriptCState *ss = &rsc->mScriptC; ss->mClearColor[0] = r; ss->mClearColor[1] = g; ss->mClearColor[2] = b; ss->mClearColor[3] = a; ss->mEnviroment.mClearColor[0] = r; ss->mEnviroment.mClearColor[1] = g; ss->mEnviroment.mClearColor[2] = b; ss->mEnviroment.mClearColor[3] = a; } void rsi_ScriptCSetClearDepth(Context * rsc, float v) { ScriptCState *ss = &rsc->mScriptC; ss->mClearDepth = v; ss->mEnviroment.mClearDepth = v; } void rsi_ScriptCSetClearStencil(Context * rsc, uint32_t v) { ScriptCState *ss = &rsc->mScriptC; ss->mClearStencil = v; ss->mEnviroment.mClearStencil = v; } void rsi_ScriptCAddType(Context * rsc, RsType vt) Loading @@ -473,30 +472,29 @@ void rsi_ScriptCAddType(Context * rsc, RsType vt) ss->mConstantBufferTypes.add(static_cast<const Type *>(vt)); } void rsi_ScriptCSetScript(Context * rsc, void* accScript, void *vp) void rsi_ScriptCSetScript(Context * rsc, void *vp) { ScriptCState *ss = &rsc->mScriptC; ss->mAccScript = reinterpret_cast<ACCscript*>(accScript); ss->mScript = reinterpret_cast<rsc_RunScript>(vp); ss->mProgram.mScript = reinterpret_cast<rsc_RunScript>(vp); } void rsi_ScriptCSetRoot(Context * rsc, bool isRoot) { ScriptCState *ss = &rsc->mScriptC; ss->mIsRoot = isRoot; ss->mEnviroment.mIsRoot = isRoot; } void rsi_ScriptCSetOrtho(Context * rsc, bool isOrtho) { ScriptCState *ss = &rsc->mScriptC; ss->mIsOrtho = isOrtho; ss->mEnviroment.mIsOrtho = isOrtho; } void rsi_ScriptCSetText(Context *rsc, const char *text, uint32_t len) { ScriptCState *ss = &rsc->mScriptC; ss->mScriptText = text; ss->mScriptTextLength = len; ss->mProgram.mScriptText = text; ss->mProgram.mScriptTextLength = len; } Loading @@ -507,19 +505,12 @@ RsScript rsi_ScriptCCreate(Context * rsc) ss->runCompiler(); ScriptC *s = new ScriptC(); s->incRef(); s->mAccScript = ss->mAccScript; ss->mAccScript = NULL; s->mScript = ss->mScript; s->mClearColor[0] = ss->mClearColor[0]; s->mClearColor[1] = ss->mClearColor[1]; s->mClearColor[2] = ss->mClearColor[2]; s->mClearColor[3] = ss->mClearColor[3]; s->mClearDepth = ss->mClearDepth; s->mClearStencil = ss->mClearStencil; s->mIsRoot = ss->mIsRoot; s->mIsOrtho = ss->mIsOrtho; s->mScriptText = ss->mScriptText; s->mScriptTextLength = ss->mScriptTextLength; s->mEnviroment = ss->mEnviroment; s->mProgram = ss->mProgram; ss->clear(); return s; } Loading libs/rs/rsScriptC.h +24 −12 Original line number Diff line number Diff line Loading @@ -36,15 +36,32 @@ public: ScriptC(); virtual ~ScriptC(); virtual bool run(Context *, uint32_t launchID); struct Program_t { const char * mScriptText; uint32_t mScriptTextLength; ACCscript* mAccScript; bool useStateVertex; bool useStateRaster; bool useStateFragment; bool useStateStore; rsc_RunScript mScript; }; struct Enviroment_t { bool mIsRoot; bool mIsOrtho; float mClearColor[4]; float mClearDepth; uint32_t mClearStencil; }; Program_t mProgram; Enviroment_t mEnviroment; ACCscript* mAccScript; virtual bool run(Context *, uint32_t launchID); struct Env { Context *mContext; Loading @@ -60,14 +77,9 @@ public: ~ScriptCState(); ACCscript* mAccScript; const char * mScriptText; uint32_t mScriptTextLength; rsc_RunScript mScript; float mClearColor[4]; float mClearDepth; uint32_t mClearStencil; bool mIsRoot; bool mIsOrtho; ScriptC::Program_t mProgram; ScriptC::Enviroment_t mEnviroment; Vector<const Type *> mConstantBufferTypes; Loading Loading
libs/rs/rsContext.cpp +1 −20 Original line number Diff line number Diff line Loading @@ -37,13 +37,9 @@ void Context::initEGL() EGL_NONE }; LOGE("EGL 1"); mDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY); LOGE("EGL 2 %p", mDisplay); eglInitialize(mDisplay, &mMajorVersion, &mMinorVersion); LOGE("EGL 3 %i %i", mMajorVersion, mMinorVersion); eglChooseConfig(mDisplay, s_configAttribs, &mConfig, 1, &mNumConfigs); LOGE("EGL 4 %p", mConfig); if (mWndSurface) { mSurface = eglCreateWindowSurface(mDisplay, mConfig, Loading @@ -55,13 +51,10 @@ void Context::initEGL() NULL); } LOGE("EGL 5"); mContext = eglCreateContext(mDisplay, mConfig, NULL, NULL); eglMakeCurrent(mDisplay, mSurface, mSurface, mContext); eglQuerySurface(mDisplay, mSurface, EGL_WIDTH, &mWidth); eglQuerySurface(mDisplay, mSurface, EGL_HEIGHT, &mHeight); LOGE("EGL 9"); } bool Context::runRootScript() Loading Loading @@ -123,16 +116,11 @@ void * Context::threadProc(void *vrsc) { Context *rsc = static_cast<Context *>(vrsc); LOGE("TP 1"); gIO = new ThreadIO(); rsc->mServerCommands.init(128); rsc->mServerReturns.init(128); rsc->initEGL(); LOGE("TP 2"); rsc->mRunning = true; bool mDraw = true; while (!rsc->mExit) { Loading @@ -149,7 +137,6 @@ void * Context::threadProc(void *vrsc) } } LOGE("TP 6"); glClearColor(0,0,0,0); glClear(GL_COLOR_BUFFER_BIT); eglSwapBuffers(rsc->mDisplay, rsc->mSurface); Loading @@ -159,7 +146,6 @@ void * Context::threadProc(void *vrsc) Context::Context(Device *dev, Surface *sur) { LOGE("CC 1"); dev->addContext(this); mDev = dev; mRunning = false; Loading @@ -171,7 +157,6 @@ Context::Context(Device *dev, Surface *sur) // see comment in header gCon = this; LOGE("CC 2"); int status; pthread_attr_t threadAttr; Loading @@ -185,17 +170,16 @@ Context::Context(Device *dev, Surface *sur) sparam.sched_priority = ANDROID_PRIORITY_DISPLAY; pthread_attr_setschedparam(&threadAttr, &sparam); LOGE("RS Launching thread"); status = pthread_create(&mThreadId, &threadAttr, threadProc, this); if (status) { LOGE("Failed to start rs context thread."); } LOGE("CC 3"); mWndSurface = sur; while(!mRunning) { sleep(1); } LOGE("CC 4"); pthread_attr_destroy(&threadAttr); } Loading @@ -205,14 +189,11 @@ Context::~Context() mExit = true; void *res; LOGE("DES 1"); int status = pthread_join(mThreadId, &res); LOGE("DES 2"); if (mDev) { mDev->removeContext(this); } LOGE("DES 3"); } void Context::swapBuffers() Loading
libs/rs/rsScriptC.cpp +35 −44 Original line number Diff line number Diff line Loading @@ -27,9 +27,7 @@ using namespace android::renderscript; ScriptC::ScriptC() { mAccScript = NULL; mScript = NULL; mScriptText = NULL; mScriptTextLength = 0; memset(&mProgram, 0, sizeof(mProgram)); } ScriptC::~ScriptC() Loading Loading @@ -392,7 +390,7 @@ static rsc_FunctionTable scriptCPtrTable = { bool ScriptC::run(Context *rsc, uint32_t launchID) { Env e = {rsc, this}; return mScript(&e, &scriptCPtrTable, launchID) != 0; return mProgram.mScript(&e, &scriptCPtrTable, launchID) != 0; } ScriptCState::ScriptCState() Loading @@ -409,32 +407,33 @@ ScriptCState::~ScriptCState() void ScriptCState::clear() { memset(&mProgram, 0, sizeof(mProgram)); mConstantBufferTypes.clear(); mClearColor[0] = 0; mClearColor[1] = 0; mClearColor[2] = 0; mClearColor[3] = 1; mClearDepth = 1; mClearStencil = 0; memset(&mEnviroment, 0, sizeof(mEnviroment)); mEnviroment.mClearColor[0] = 0; mEnviroment.mClearColor[1] = 0; mEnviroment.mClearColor[2] = 0; mEnviroment.mClearColor[3] = 1; mEnviroment.mClearDepth = 1; mEnviroment.mClearStencil = 0; mEnviroment.mIsRoot = false; mEnviroment.mIsOrtho = true; mAccScript = NULL; mScript = NULL; mIsRoot = false; mIsOrtho = true; mScriptText = NULL; mScriptTextLength = 0; } void ScriptCState::runCompiler() { mAccScript = accCreateScript(); LOGE("Compiler 1"); const char* scriptSource[] = {mScriptText}; int scriptLength[] = {mScriptTextLength} ; const char* scriptSource[] = {mProgram.mScriptText}; int scriptLength[] = {mProgram.mScriptTextLength} ; accScriptSource(mAccScript, 1, scriptSource, scriptLength); accCompileScript(mAccScript); accGetScriptLabel(mAccScript, "main", (ACCvoid**) &mScript); LOGE("Compiler 1"); accGetScriptLabel(mAccScript, "main", (ACCvoid**) &mProgram.mScript); } namespace android { Loading @@ -449,22 +448,22 @@ void rsi_ScriptCBegin(Context * rsc) void rsi_ScriptCSetClearColor(Context * rsc, float r, float g, float b, float a) { ScriptCState *ss = &rsc->mScriptC; ss->mClearColor[0] = r; ss->mClearColor[1] = g; ss->mClearColor[2] = b; ss->mClearColor[3] = a; ss->mEnviroment.mClearColor[0] = r; ss->mEnviroment.mClearColor[1] = g; ss->mEnviroment.mClearColor[2] = b; ss->mEnviroment.mClearColor[3] = a; } void rsi_ScriptCSetClearDepth(Context * rsc, float v) { ScriptCState *ss = &rsc->mScriptC; ss->mClearDepth = v; ss->mEnviroment.mClearDepth = v; } void rsi_ScriptCSetClearStencil(Context * rsc, uint32_t v) { ScriptCState *ss = &rsc->mScriptC; ss->mClearStencil = v; ss->mEnviroment.mClearStencil = v; } void rsi_ScriptCAddType(Context * rsc, RsType vt) Loading @@ -473,30 +472,29 @@ void rsi_ScriptCAddType(Context * rsc, RsType vt) ss->mConstantBufferTypes.add(static_cast<const Type *>(vt)); } void rsi_ScriptCSetScript(Context * rsc, void* accScript, void *vp) void rsi_ScriptCSetScript(Context * rsc, void *vp) { ScriptCState *ss = &rsc->mScriptC; ss->mAccScript = reinterpret_cast<ACCscript*>(accScript); ss->mScript = reinterpret_cast<rsc_RunScript>(vp); ss->mProgram.mScript = reinterpret_cast<rsc_RunScript>(vp); } void rsi_ScriptCSetRoot(Context * rsc, bool isRoot) { ScriptCState *ss = &rsc->mScriptC; ss->mIsRoot = isRoot; ss->mEnviroment.mIsRoot = isRoot; } void rsi_ScriptCSetOrtho(Context * rsc, bool isOrtho) { ScriptCState *ss = &rsc->mScriptC; ss->mIsOrtho = isOrtho; ss->mEnviroment.mIsOrtho = isOrtho; } void rsi_ScriptCSetText(Context *rsc, const char *text, uint32_t len) { ScriptCState *ss = &rsc->mScriptC; ss->mScriptText = text; ss->mScriptTextLength = len; ss->mProgram.mScriptText = text; ss->mProgram.mScriptTextLength = len; } Loading @@ -507,19 +505,12 @@ RsScript rsi_ScriptCCreate(Context * rsc) ss->runCompiler(); ScriptC *s = new ScriptC(); s->incRef(); s->mAccScript = ss->mAccScript; ss->mAccScript = NULL; s->mScript = ss->mScript; s->mClearColor[0] = ss->mClearColor[0]; s->mClearColor[1] = ss->mClearColor[1]; s->mClearColor[2] = ss->mClearColor[2]; s->mClearColor[3] = ss->mClearColor[3]; s->mClearDepth = ss->mClearDepth; s->mClearStencil = ss->mClearStencil; s->mIsRoot = ss->mIsRoot; s->mIsOrtho = ss->mIsOrtho; s->mScriptText = ss->mScriptText; s->mScriptTextLength = ss->mScriptTextLength; s->mEnviroment = ss->mEnviroment; s->mProgram = ss->mProgram; ss->clear(); return s; } Loading
libs/rs/rsScriptC.h +24 −12 Original line number Diff line number Diff line Loading @@ -36,15 +36,32 @@ public: ScriptC(); virtual ~ScriptC(); virtual bool run(Context *, uint32_t launchID); struct Program_t { const char * mScriptText; uint32_t mScriptTextLength; ACCscript* mAccScript; bool useStateVertex; bool useStateRaster; bool useStateFragment; bool useStateStore; rsc_RunScript mScript; }; struct Enviroment_t { bool mIsRoot; bool mIsOrtho; float mClearColor[4]; float mClearDepth; uint32_t mClearStencil; }; Program_t mProgram; Enviroment_t mEnviroment; ACCscript* mAccScript; virtual bool run(Context *, uint32_t launchID); struct Env { Context *mContext; Loading @@ -60,14 +77,9 @@ public: ~ScriptCState(); ACCscript* mAccScript; const char * mScriptText; uint32_t mScriptTextLength; rsc_RunScript mScript; float mClearColor[4]; float mClearDepth; uint32_t mClearStencil; bool mIsRoot; bool mIsOrtho; ScriptC::Program_t mProgram; ScriptC::Enviroment_t mEnviroment; Vector<const Type *> mConstantBufferTypes; Loading