summaryrefslogtreecommitdiff
path: root/graphics/java/android/renderscript/ScriptC.java
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2010-03-26 16:06:43 -0700
committerJason Sams <rjsams@android.com>2010-03-26 16:08:09 -0700
commit2d71bc7b4c46a32cead32a35e6e137d13e8315ea (patch)
treea4079693d1f451c058392d961ea6cf2b562b2129 /graphics/java/android/renderscript/ScriptC.java
parenta70f416c9cf2fc6cc5e132c1d656ce07441d6b82 (diff)
Update Script java classes and llvm samples.
Change-Id: I05c8d63fcca095d4fea6abb1ff5736ab9d78a3e6
Diffstat (limited to 'graphics/java/android/renderscript/ScriptC.java')
-rw-r--r--graphics/java/android/renderscript/ScriptC.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/graphics/java/android/renderscript/ScriptC.java b/graphics/java/android/renderscript/ScriptC.java
index bb99e23e8fa6..f5d5b2fa5370 100644
--- a/graphics/java/android/renderscript/ScriptC.java
+++ b/graphics/java/android/renderscript/ScriptC.java
@@ -37,6 +37,47 @@ public class ScriptC extends Script {
super(id, rs);
}
+ protected ScriptC(RenderScript rs, Resources resources, int resourceID, boolean isRoot) {
+ super(0, rs);
+ mID = internalCreate(rs, resources, resourceID, isRoot);
+ }
+
+
+ private static synchronized int internalCreate(RenderScript rs, Resources resources, int resourceID, boolean isRoot) {
+ byte[] pgm;
+ int pgmLength;
+ InputStream is = resources.openRawResource(resourceID);
+ try {
+ try {
+ pgm = new byte[1024];
+ pgmLength = 0;
+ while(true) {
+ int bytesLeft = pgm.length - pgmLength;
+ if (bytesLeft == 0) {
+ byte[] buf2 = new byte[pgm.length * 2];
+ System.arraycopy(pgm, 0, buf2, 0, pgm.length);
+ pgm = buf2;
+ bytesLeft = pgm.length - pgmLength;
+ }
+ int bytesRead = is.read(pgm, pgmLength, bytesLeft);
+ if (bytesRead <= 0) {
+ break;
+ }
+ pgmLength += bytesRead;
+ }
+ } finally {
+ is.close();
+ }
+ } catch(IOException e) {
+ throw new Resources.NotFoundException();
+ }
+
+ rs.nScriptCBegin();
+ rs.nScriptCSetScript(pgm, 0, pgmLength);
+ rs.nScriptSetRoot(isRoot);
+ return rs.nScriptCCreate();
+ }
+
public static class Builder extends Script.Builder {
byte[] mProgram;
int mProgramLength;