From 5235cf3f41cfcfe39c7072fddf1ead52db31292d Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Mon, 28 Sep 2009 18:12:56 -0700 Subject: [PATCH] Fix but processing raster state pragma. rename stateFragmentStore to stateStore --- .../java/android/renderscript/BaseObj.java | 4 ++-- libs/rs/java/Film/res/raw/filmimage.c | 2 +- libs/rs/java/Film/res/raw/filmstrip.c | 4 ++-- libs/rs/java/Fountain/res/raw/fountain.c | 3 --- libs/rs/java/Rollo/res/raw/rollo.c | 6 +++--- libs/rs/java/Rollo/res/raw/rollo2.c | 2 +- libs/rs/rsContext.cpp | 3 ++- libs/rs/rsScript.h | 2 +- libs/rs/rsScriptC.cpp | 20 ++++++++++++++++-- libs/rs/rsScriptC_Lib.cpp | 21 +++++++++++++++++++ 10 files changed, 51 insertions(+), 16 deletions(-) diff --git a/graphics/java/android/renderscript/BaseObj.java b/graphics/java/android/renderscript/BaseObj.java index c626d5d1ea392..e802ec51a1ec1 100644 --- a/graphics/java/android/renderscript/BaseObj.java +++ b/graphics/java/android/renderscript/BaseObj.java @@ -66,8 +66,8 @@ class BaseObj { mRS = null; mID = 0; mDestroyed = true; - Log.v(RenderScript.LOG_TAG, - getClass() + " auto finalizing object without having released the RS reference."); + //Log.v(RenderScript.LOG_TAG, getClass() + + // " auto finalizing object without having released the RS reference."); } super.finalize(); } diff --git a/libs/rs/java/Film/res/raw/filmimage.c b/libs/rs/java/Film/res/raw/filmimage.c index 3bd94963931b4..d154c68bfa003 100644 --- a/libs/rs/java/Film/res/raw/filmimage.c +++ b/libs/rs/java/Film/res/raw/filmimage.c @@ -4,7 +4,7 @@ #pragma stateVertex(orthoWindow) #pragma stateRaster(flat) #pragma stateFragment(PgmFragBackground) -#pragma stateFragmentStore(MyBlend) +#pragma stateStore(MyBlend) int main(void* con, int ft, int launchID) { diff --git a/libs/rs/java/Film/res/raw/filmstrip.c b/libs/rs/java/Film/res/raw/filmstrip.c index 8fbfee1c11fee..bf75675743a16 100644 --- a/libs/rs/java/Film/res/raw/filmstrip.c +++ b/libs/rs/java/Film/res/raw/filmstrip.c @@ -3,7 +3,7 @@ #pragma version(1) #pragma stateVertex(PVBackground) #pragma stateFragment(PFBackground) -#pragma stateFragmentStore(PSBackground) +#pragma stateStore(PSBackground) #define STATE_TRIANGLE_OFFSET_COUNT 0 #define STATE_LAST_FOCUS 1 @@ -33,7 +33,7 @@ int main(int index) drawSimpleMesh(NAMED_mesh); // Start of images. - bindProgramFragmentStore(NAMED_PSImages); + bindProgramStore(NAMED_PSImages); bindProgramFragment(NAMED_PFImages); bindProgramVertex(NAMED_PVImages); diff --git a/libs/rs/java/Fountain/res/raw/fountain.c b/libs/rs/java/Fountain/res/raw/fountain.c index 86f0f99770ce2..f218f9bfba570 100644 --- a/libs/rs/java/Fountain/res/raw/fountain.c +++ b/libs/rs/java/Fountain/res/raw/fountain.c @@ -1,8 +1,5 @@ // Fountain test script #pragma version(1) -#pragma stateVertex(default) -#pragma stateFragment(default) -#pragma stateFragmentStore(default) int newPart = 0; diff --git a/libs/rs/java/Rollo/res/raw/rollo.c b/libs/rs/java/Rollo/res/raw/rollo.c index 63767151c6f20..b31be81aac149 100644 --- a/libs/rs/java/Rollo/res/raw/rollo.c +++ b/libs/rs/java/Rollo/res/raw/rollo.c @@ -1,7 +1,7 @@ #pragma version(1) #pragma stateVertex(PV) #pragma stateFragment(PF) -#pragma stateFragmentStore(PFS) +#pragma stateStore(PFS) // Scratch buffer layout #define SCRATCH_FADE 0 @@ -105,7 +105,7 @@ int main(void* con, int ft, int launchID) if ((zoom < 1.1f) && (zoom > 0.9f)) { bindProgramVertex(NAMED_PVOrtho); bindProgramFragment(NAMED_PFText); - bindProgramFragmentStore(NAMED_PFSText); + bindProgramStore(NAMED_PFSText); rot = drawRot * scale; index = 0; @@ -144,7 +144,7 @@ int main(void* con, int ft, int launchID) bindProgramVertex(NAMED_PV); bindProgramFragment(NAMED_PF); - bindProgramFragmentStore(NAMED_PFS); + bindProgramStore(NAMED_PFS); } // Draw the selected icon diff --git a/libs/rs/java/Rollo/res/raw/rollo2.c b/libs/rs/java/Rollo/res/raw/rollo2.c index 256fa3cf40b70..5b5cb2d382baf 100644 --- a/libs/rs/java/Rollo/res/raw/rollo2.c +++ b/libs/rs/java/Rollo/res/raw/rollo2.c @@ -1,7 +1,7 @@ #pragma version(1) #pragma stateVertex(PV) #pragma stateFragment(PF) -#pragma stateFragmentStore(PFS) +#pragma stateStore(PFS) // Scratch buffer layout #define SCRATCH_FADE 0 diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp index 70add927d4485..169d5d40ecafa 100644 --- a/libs/rs/rsContext.cpp +++ b/libs/rs/rsContext.cpp @@ -103,12 +103,14 @@ bool Context::runScript(Script *s, uint32_t launchID) ObjectBaseRef frag(mFragment); ObjectBaseRef vtx(mVertex); ObjectBaseRef store(mFragmentStore); + ObjectBaseRef raster(mRaster); bool ret = s->run(this, launchID); mFragment.set(frag); mVertex.set(vtx); mFragmentStore.set(store); + mRaster.set(raster); return ret; } @@ -124,7 +126,6 @@ bool Context::runRootScript() eglQuerySurface(mEGL.mDisplay, mEGL.mSurface, EGL_HEIGHT, &mEGL.mHeight); glViewport(0, 0, mEGL.mWidth, mEGL.mHeight); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - //glEnable(GL_POINT_SMOOTH); glClearColor(mRootScript->mEnviroment.mClearColor[0], mRootScript->mEnviroment.mClearColor[1], diff --git a/libs/rs/rsScript.h b/libs/rs/rsScript.h index 0067fc88b78ae..8aa45423c7746 100644 --- a/libs/rs/rsScript.h +++ b/libs/rs/rsScript.h @@ -51,7 +51,7 @@ public: ObjectBaseRef mVertex; ObjectBaseRef mFragment; - //ObjectBaseRef mRaster; + ObjectBaseRef mRaster; ObjectBaseRef mFragmentStore; InvokeFunc_t mInvokables[MAX_SCRIPT_BANKS]; const char * mScriptText; diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp index e63ed2462dea9..20088da31c226 100644 --- a/libs/rs/rsScriptC.cpp +++ b/libs/rs/rsScriptC.cpp @@ -72,6 +72,9 @@ bool ScriptC::run(Context *rsc, uint32_t launchIndex) if (mEnviroment.mVertex.get()) { rsc->setVertex(mEnviroment.mVertex.get()); } + if (mEnviroment.mRaster.get()) { + rsc->setRaster(mEnviroment.mRaster.get()); + } if (launchIndex == 0) { mEnviroment.mStartTimeMillis @@ -175,6 +178,7 @@ void ScriptCState::runCompiler(Context *rsc, ScriptC *s) s->mEnviroment.mFragment.set(rsc->getDefaultProgramFragment()); s->mEnviroment.mVertex.set(rsc->getDefaultProgramVertex()); s->mEnviroment.mFragmentStore.set(rsc->getDefaultProgramFragmentStore()); + s->mEnviroment.mRaster.set(rsc->getDefaultProgramRaster()); if (s->mProgram.mScript) { const static int pragmaMax = 16; @@ -204,6 +208,18 @@ void ScriptCState::runCompiler(Context *rsc, ScriptC *s) } if (!strcmp(str[ct], "stateRaster")) { + if (!strcmp(str[ct+1], "default")) { + continue; + } + if (!strcmp(str[ct+1], "parent")) { + s->mEnviroment.mRaster.clear(); + continue; + } + ProgramRaster * pr = (ProgramRaster *)rsc->lookupName(str[ct+1]); + if (pr != NULL) { + s->mEnviroment.mRaster.set(pr); + continue; + } LOGE("Unreconized value %s passed to stateRaster", str[ct+1]); } @@ -223,7 +239,7 @@ void ScriptCState::runCompiler(Context *rsc, ScriptC *s) LOGE("Unreconized value %s passed to stateFragment", str[ct+1]); } - if (!strcmp(str[ct], "stateFragmentStore")) { + if (!strcmp(str[ct], "stateStore")) { if (!strcmp(str[ct+1], "default")) { continue; } @@ -237,7 +253,7 @@ void ScriptCState::runCompiler(Context *rsc, ScriptC *s) s->mEnviroment.mFragmentStore.set(pfs); continue; } - LOGE("Unreconized value %s passed to stateFragmentStore", str[ct+1]); + LOGE("Unreconized value %s passed to stateStore", str[ct+1]); } } diff --git a/libs/rs/rsScriptC_Lib.cpp b/libs/rs/rsScriptC_Lib.cpp index f5f182f19f501..2f195a5e66c06 100644 --- a/libs/rs/rsScriptC_Lib.cpp +++ b/libs/rs/rsScriptC_Lib.cpp @@ -672,6 +672,23 @@ static void SC_drawLine(float x1, float y1, float z1, glDrawArrays(GL_LINES, 0, 2); } +static void SC_drawPoint(float x, float y, float z) +{ + GET_TLS(); + rsc->setupCheck(); + + float vtx[] = { x, y, z }; + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(3, GL_FLOAT, 0, vtx); + + glDisableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); + + glDrawArrays(GL_POINTS, 0, 1); +} + static void SC_drawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, float x2, float y2, float z2, @@ -1131,6 +1148,8 @@ ScriptCState::SymbolTable_t ScriptCState::gSyms[] = { "void", "(int)" }, { "bindProgramFragmentStore", (void *)&SC_bindProgramFragmentStore, "void", "(int)" }, + { "bindProgramStore", (void *)&SC_bindProgramFragmentStore, + "void", "(int)" }, { "bindProgramVertex", (void *)&SC_bindProgramVertex, "void", "(int)" }, { "bindSampler", (void *)&SC_bindSampler, @@ -1155,6 +1174,8 @@ ScriptCState::SymbolTable_t ScriptCState::gSyms[] = { "void", "(float x1, float y1, float z1, float u1, float v1, float x2, float y2, float z2, float u2, float v2, float x3, float y3, float z3, float u3, float v3, float x4, float y4, float z4, float u4, float v4)" }, { "drawLine", (void *)&SC_drawLine, "void", "(float x1, float y1, float z1, float x2, float y2, float z2)" }, + { "drawPoint", (void *)&SC_drawPoint, + "void", "(float x1, float y1, float z1)" }, { "drawSimpleMesh", (void *)&SC_drawSimpleMesh, "void", "(int ism)" }, { "drawSimpleMeshRange", (void *)&SC_drawSimpleMeshRange,