diff options
author | Tim Murray <timmurray@google.com> | 2014-05-16 11:47:26 -0700 |
---|---|---|
committer | Tim Murray <timmurray@google.com> | 2014-06-03 15:11:37 -0700 |
commit | 56f9e6f8d5436d50530807950661e66ca5efe2bb (patch) | |
tree | dc72e2006657fd446f8115403e27487c998cbd76 /rs/java/android/renderscript/ScriptC.java | |
parent | 422b38f1a003d2633743e3249906c80084d88d11 (diff) |
Add support for mixed 32/64 APKs using RenderScript.
Change-Id: I8901a1547d180c9dcef320f86d07a5b82551fb5c
Diffstat (limited to 'rs/java/android/renderscript/ScriptC.java')
-rw-r--r-- | rs/java/android/renderscript/ScriptC.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/rs/java/android/renderscript/ScriptC.java b/rs/java/android/renderscript/ScriptC.java index 9e76f5293bd0..3176e28db1c2 100644 --- a/rs/java/android/renderscript/ScriptC.java +++ b/rs/java/android/renderscript/ScriptC.java @@ -67,6 +67,26 @@ public class ScriptC extends Script { } /** + * Only intended for use by the generated derived classes. + * + * @param rs + * @hide + */ + protected ScriptC(RenderScript rs, String resName, byte[] bitcode32, byte[] bitcode64) { + super(0, rs); + long id = 0; + if (RenderScript.sPointerSize == 4) { + id = internalStringCreate(rs, resName, bitcode32); + } else { + id = internalStringCreate(rs, resName, bitcode64); + } + if (id == 0) { + throw new RSRuntimeException("Loading of ScriptC script failed."); + } + setID(id); + } + + /** * Name of the file that holds the object cache. */ private static final String CACHE_PATH = "com.android.renderscript.cache"; @@ -113,4 +133,17 @@ public class ScriptC extends Script { // Log.v(TAG, "Create script for resource = " + resName); return rs.nScriptCCreate(resName, mCachePath, pgm, pgmLength); } + + private static synchronized long internalStringCreate(RenderScript rs, String resName, byte[] bitcode) { + // Create the RS cache path if we haven't done so already. + if (mCachePath == null) { + File f = new File(rs.mCacheDir, CACHE_PATH); + mCachePath = f.getAbsolutePath(); + f.mkdirs(); + } + // Log.v(TAG, "Create script for resource = " + resName); + return rs.nScriptCCreate(resName, mCachePath, bitcode, bitcode.length); + } + + } |