diff options
author | Jason Sams <rjsams@android.com> | 2010-06-15 12:15:57 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2010-06-15 12:15:57 -0700 |
commit | 96ed4cfa62dd09aafb3f9da01e047661b4fe3c95 (patch) | |
tree | fdf2cc680ff2af9a4e9e9052200dea65cfac7cd9 /libs/rs | |
parent | 56985cea7759fa1e72085ec851fafa2d9a450dd7 (diff) | |
download | frameworks_base-96ed4cfa62dd09aafb3f9da01e047661b4fe3c95.zip frameworks_base-96ed4cfa62dd09aafb3f9da01e047661b4fe3c95.tar.gz frameworks_base-96ed4cfa62dd09aafb3f9da01e047661b4fe3c95.tar.bz2 |
Remove InvokeData and add ContextFinish to generate a sync point.
Change-Id: I27da8bf5fba2c8a428964cb6a5e66dd7a94958d8
Diffstat (limited to 'libs/rs')
-rw-r--r-- | libs/rs/java/Fountain/res/raw/fountain.rs | 4 | ||||
-rw-r--r-- | libs/rs/java/Fountain/res/raw/fountain_bc.bc | bin | 2632 -> 2768 bytes | |||
-rw-r--r-- | libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java | 4 | ||||
-rw-r--r-- | libs/rs/java/Fountain/src/com/android/fountain/ScriptC_Fountain.java | 16 | ||||
-rw-r--r-- | libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point.java (renamed from libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point_s.java) | 4 | ||||
-rw-r--r-- | libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java | 4 | ||||
-rw-r--r-- | libs/rs/java/ImageProcessing/src/com/android/rs/image/ScriptC_Threshold.java | 4 | ||||
-rw-r--r-- | libs/rs/rs.spec | 9 | ||||
-rw-r--r-- | libs/rs/rsContext.cpp | 3 | ||||
-rw-r--r-- | libs/rs/rsHandcode.h | 8 | ||||
-rw-r--r-- | libs/rs/rsScriptC.cpp | 24 | ||||
-rw-r--r-- | libs/rs/rsScriptC_LibGL.cpp | 4 |
12 files changed, 54 insertions, 30 deletions
diff --git a/libs/rs/java/Fountain/res/raw/fountain.rs b/libs/rs/java/Fountain/res/raw/fountain.rs index 7573398..c44a796 100644 --- a/libs/rs/java/Fountain/res/raw/fountain.rs +++ b/libs/rs/java/Fountain/res/raw/fountain.rs @@ -1,6 +1,8 @@ // Fountain test script #pragma version(1) +#pragma rs java_package_name(com.android.fountain) + #include "../../../../scriptc/rs_types.rsh" #include "../../../../scriptc/rs_math.rsh" #include "../../../../scriptc/rs_graphics.rsh" @@ -10,7 +12,7 @@ static int newPart = 0; float4 partColor; rs_mesh partMesh; -typedef struct __attribute__((packed, aligned(4))) Point_s { +typedef struct __attribute__((packed, aligned(4))) Point { float2 delta; float2 position; uchar4 color; diff --git a/libs/rs/java/Fountain/res/raw/fountain_bc.bc b/libs/rs/java/Fountain/res/raw/fountain_bc.bc Binary files differindex b01098b..f90d8f1 100644 --- a/libs/rs/java/Fountain/res/raw/fountain_bc.bc +++ b/libs/rs/java/Fountain/res/raw/fountain_bc.bc diff --git a/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java b/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java index 5433597..7a7866d 100644 --- a/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java +++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java @@ -34,7 +34,7 @@ public class FountainRS { mRS = rs; mRes = res; - ScriptField_Point_s points = new ScriptField_Point_s(mRS, PART_COUNT); + ScriptField_Point points = new ScriptField_Point(mRS, PART_COUNT); SimpleMesh.Builder smb = new SimpleMesh.Builder(mRS); int vtxSlot = smb.addVertexType(points.getType()); @@ -42,7 +42,7 @@ public class FountainRS { SimpleMesh sm = smb.create(); sm.bindVertexAllocation(points.getAllocation(), vtxSlot); - mScript = new ScriptC_Fountain(mRS, mRes, true); + mScript = new ScriptC_Fountain(mRS, mRes, R.raw.fountain_bc, true); mScript.set_partMesh(sm); mScript.bind_point(points); mRS.contextBindRootScript(mScript); diff --git a/libs/rs/java/Fountain/src/com/android/fountain/ScriptC_Fountain.java b/libs/rs/java/Fountain/src/com/android/fountain/ScriptC_Fountain.java index f6bef27..88062e8 100644 --- a/libs/rs/java/Fountain/src/com/android/fountain/ScriptC_Fountain.java +++ b/libs/rs/java/Fountain/src/com/android/fountain/ScriptC_Fountain.java @@ -22,8 +22,8 @@ import android.util.Log; public class ScriptC_Fountain extends ScriptC { // Constructor - public ScriptC_Fountain(RenderScript rs, Resources resources, boolean isRoot) { - super(rs, resources, R.raw.fountain_bc, isRoot); + public ScriptC_Fountain(RenderScript rs, Resources resources, int id, boolean isRoot) { + super(rs, resources, id, isRoot); } private final static int mExportVarIdx_partColor = 0; @@ -43,9 +43,7 @@ public class ScriptC_Fountain extends ScriptC { private SimpleMesh mExportVar_partMesh; public void set_partMesh(SimpleMesh v) { mExportVar_partMesh = v; - int id = 0; - if (v != null) id = v.getID(); - setVar(mExportVarIdx_partMesh, id); + setVar(mExportVarIdx_partMesh, (v == null) ? 0 : v.getID()); } public SimpleMesh get_partMesh() { @@ -53,14 +51,14 @@ public class ScriptC_Fountain extends ScriptC { } private final static int mExportVarIdx_point = 2; - private ScriptField_Point_s mExportVar_point; - public void bind_point(ScriptField_Point_s v) { + private ScriptField_Point mExportVar_point; + public void bind_point(ScriptField_Point v) { mExportVar_point = v; if(v == null) bindAllocation(null, mExportVarIdx_point); else bindAllocation(v.getAllocation(), mExportVarIdx_point); } - public ScriptField_Point_s get_point() { + public ScriptField_Point get_point() { return mExportVar_point; } @@ -70,7 +68,7 @@ public class ScriptC_Fountain extends ScriptC { addParticles_fp.addI32(rate); addParticles_fp.addI32(x); addParticles_fp.addI32(y); - invokeV(mExportFuncIdx_addParticles, addParticles_fp); + invoke(mExportFuncIdx_addParticles, addParticles_fp); } } diff --git a/libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point_s.java b/libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point.java index 9697a4d..dee4e96 100644 --- a/libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point_s.java +++ b/libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point.java @@ -20,7 +20,7 @@ import android.renderscript.*; import android.content.res.Resources; import android.util.Log; -public class ScriptField_Point_s extends android.renderscript.Script.FieldBase { +public class ScriptField_Point extends android.renderscript.Script.FieldBase { static public class Item { public static final int sizeof = 20; @@ -38,7 +38,7 @@ public class ScriptField_Point_s extends android.renderscript.Script.FieldBase { private Item mItemArray[]; private FieldPacker mIOBuffer; - public ScriptField_Point_s(RenderScript rs, int count) { + public ScriptField_Point(RenderScript rs, int count) { mItemArray = null; mIOBuffer = null; { diff --git a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java index 5e36a78..b39d141 100644 --- a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java +++ b/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java @@ -286,6 +286,7 @@ public class ImageProcessingActivity extends Activity long t = java.lang.System.currentTimeMillis(); if (true) { mScript.invokable_Filter(); + mRS.finish(); } else { javaFilter(); } @@ -355,6 +356,7 @@ public class ImageProcessingActivity extends Activity public void surfaceCreated(SurfaceHolder holder) { createScript(); mScript.invokable_Filter(); + mRS.finish(); } public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { @@ -412,6 +414,7 @@ public class ImageProcessingActivity extends Activity long t = java.lang.System.currentTimeMillis(); mScript.invokable_FilterBenchmark(); + mRS.finish(); t = java.lang.System.currentTimeMillis() - t; android.util.Log.v("Img", "Renderscript frame time core ms " + t); @@ -424,5 +427,6 @@ public class ImageProcessingActivity extends Activity mScript.set_radius(mRadius); mScript.invokable_Filter(); + mRS.finish(); } } diff --git a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ScriptC_Threshold.java b/libs/rs/java/ImageProcessing/src/com/android/rs/image/ScriptC_Threshold.java index 4d5c7f5..42adb27 100644 --- a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ScriptC_Threshold.java +++ b/libs/rs/java/ImageProcessing/src/com/android/rs/image/ScriptC_Threshold.java @@ -104,12 +104,12 @@ public class ScriptC_Threshold private final static int mInvokableIndex_Filter = 4; public void invokable_Filter() { - invokeData(mInvokableIndex_Filter); + invoke(mInvokableIndex_Filter); } private final static int mInvokableIndex_FilterBenchmark = 5; public void invokable_FilterBenchmark() { - invokeData(mInvokableIndex_FilterBenchmark); + invoke(mInvokableIndex_FilterBenchmark); } } diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec index 4867cad..5f76486 100644 --- a/libs/rs/rs.spec +++ b/libs/rs/rs.spec @@ -1,4 +1,7 @@ +ContextFinish { + handcodeApi + } ContextBindRootScript { param RsScript sampler @@ -261,12 +264,6 @@ ScriptInvoke { param uint32_t slot } -ScriptInvokeData { - param RsScript s - param uint32_t slot - param void * data - } - ScriptInvokeV { param RsScript s param uint32_t slot diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp index 449e5dc..b9349bd 100644 --- a/libs/rs/rsContext.cpp +++ b/libs/rs/rsContext.cpp @@ -761,6 +761,9 @@ void Context::dumpDebug() const namespace android { namespace renderscript { +void rsi_ContextFinish(Context *rsc) +{ +} void rsi_ContextBindRootScript(Context *rsc, RsScript vs) { diff --git a/libs/rs/rsHandcode.h b/libs/rs/rsHandcode.h index f6e56ac..353b73a 100644 --- a/libs/rs/rsHandcode.h +++ b/libs/rs/rsHandcode.h @@ -1,6 +1,14 @@ #define DATA_SYNC_SIZE 1024 +static inline void rsHCAPI_ContextFinish (RsContext rsc) +{ + ThreadIO *io = &((Context *)rsc)->mIO; + uint32_t size = sizeof(RS_CMD_ContextFinish); + RS_CMD_ContextFinish *cmd = static_cast<RS_CMD_ContextFinish *>(io->mToCore.reserve(size)); + io->mToCore.commitSync(RS_CMD_ID_ContextFinish, size); +} + static inline void rsHCAPI_ScriptInvokeV (RsContext rsc, RsScript va, uint32_t slot, const void * data, uint32_t sizeBytes) { ThreadIO *io = &((Context *)rsc)->mIO; diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp index ef37286..975b704 100644 --- a/libs/rs/rsScriptC.cpp +++ b/libs/rs/rsScriptC.cpp @@ -260,16 +260,24 @@ void ScriptCState::runCompiler(Context *rsc, ScriptC *s) s->mProgram.mInit(); } - s->mEnviroment.mInvokeFunctions = (Script::InvokeFunc_t *)calloc(100, sizeof(void *)); - BCCchar **labels = new char*[100]; - bccGetFunctions(s->mBccScript, (BCCsizei *)&s->mEnviroment.mInvokeFunctionCount, - 100, (BCCchar **)labels); + bccGetExportFuncs(s->mBccScript, (BCCsizei*) &s->mEnviroment.mInvokeFunctionCount, 0, NULL); + if(s->mEnviroment.mInvokeFunctionCount <= 0) + s->mEnviroment.mInvokeFunctions = NULL; + else { + s->mEnviroment.mInvokeFunctions = (Script::InvokeFunc_t*) calloc(s->mEnviroment.mInvokeFunctionCount, sizeof(Script::InvokeFunc_t)); + bccGetExportFuncs(s->mBccScript, NULL, s->mEnviroment.mInvokeFunctionCount, (BCCvoid **) s->mEnviroment.mInvokeFunctions); + } + +// s->mEnviroment.mInvokeFunctions = (Script::InvokeFunc_t *)calloc(100, sizeof(void *)); +// BCCchar **labels = new char*[100]; +// bccGetFunctions(s->mBccScript, (BCCsizei *)&s->mEnviroment.mInvokeFunctionCount, +// 100, (BCCchar **)labels); //LOGE("func count %i", s->mEnviroment.mInvokeFunctionCount); - for (uint32_t i=0; i < s->mEnviroment.mInvokeFunctionCount; i++) { - BCCsizei length; - bccGetFunctionBinary(s->mBccScript, labels[i], (BCCvoid **)&(s->mEnviroment.mInvokeFunctions[i]), &length); +// for (uint32_t i=0; i < s->mEnviroment.mInvokeFunctionCount; i++) { +// BCCsizei length; +// bccGetFunctionBinary(s->mBccScript, labels[i], (BCCvoid **)&(s->mEnviroment.mInvokeFunctions[i]), &length); //LOGE("func %i %p", i, s->mEnviroment.mInvokeFunctions[i]); - } + // } s->mEnviroment.mFieldAddress = (void **)calloc(100, sizeof(void *)); bccGetExportVars(s->mBccScript, (BCCsizei *)&s->mEnviroment.mFieldCount, diff --git a/libs/rs/rsScriptC_LibGL.cpp b/libs/rs/rsScriptC_LibGL.cpp index 8f650f8..01a23c0 100644 --- a/libs/rs/rsScriptC_LibGL.cpp +++ b/libs/rs/rsScriptC_LibGL.cpp @@ -477,6 +477,8 @@ static ScriptCState::SymbolTable_t gSyms[] = { { "_Z18rsgUploadToTextureii", (void *)&SC_uploadToTexture2 }, { "_Z18rsgUploadToTexturei", (void *)&SC_uploadToTexture }, + { "_Z18rsgUploadToTexture13rs_allocationi", (void *)&SC_uploadToTexture2 }, + { "_Z18rsgUploadToTexture13rs_allocation", (void *)&SC_uploadToTexture }, { "rsgUploadToBufferObject", (void *)&SC_uploadToBufferObject }, { "rsgDrawRect", (void *)&SC_drawRect }, @@ -487,6 +489,8 @@ static ScriptCState::SymbolTable_t gSyms[] = { { "rsgDrawSpriteScreenspaceCropped", (void *)&SC_drawSpriteScreenspaceCropped }, { "rsgDrawLine", (void *)&SC_drawLine }, { "rsgDrawPoint", (void *)&SC_drawPoint }, + { "_Z17rsgDrawSimpleMesh7rs_mesh", (void *)&SC_drawSimpleMesh }, + { "_Z17rsgDrawSimpleMesh7rs_meshii", (void *)&SC_drawSimpleMeshRange }, { "_Z17rsgDrawSimpleMeshi", (void *)&SC_drawSimpleMesh }, { "_Z17rsgDrawSimpleMeshiii", (void *)&SC_drawSimpleMeshRange }, |