summaryrefslogtreecommitdiffstats
path: root/libs/rs
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2010-06-15 12:15:57 -0700
committerJason Sams <rjsams@android.com>2010-06-15 12:15:57 -0700
commit96ed4cfa62dd09aafb3f9da01e047661b4fe3c95 (patch)
treefdf2cc680ff2af9a4e9e9052200dea65cfac7cd9 /libs/rs
parent56985cea7759fa1e72085ec851fafa2d9a450dd7 (diff)
downloadframeworks_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.rs4
-rw-r--r--libs/rs/java/Fountain/res/raw/fountain_bc.bcbin2632 -> 2768 bytes
-rw-r--r--libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java4
-rw-r--r--libs/rs/java/Fountain/src/com/android/fountain/ScriptC_Fountain.java16
-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.java4
-rw-r--r--libs/rs/java/ImageProcessing/src/com/android/rs/image/ScriptC_Threshold.java4
-rw-r--r--libs/rs/rs.spec9
-rw-r--r--libs/rs/rsContext.cpp3
-rw-r--r--libs/rs/rsHandcode.h8
-rw-r--r--libs/rs/rsScriptC.cpp24
-rw-r--r--libs/rs/rsScriptC_LibGL.cpp4
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
index b01098b..f90d8f1 100644
--- a/libs/rs/java/Fountain/res/raw/fountain_bc.bc
+++ b/libs/rs/java/Fountain/res/raw/fountain_bc.bc
Binary files differ
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 },