diff options
author | Shih-wei Liao <sliao@google.com> | 2010-12-10 01:03:59 -0800 |
---|---|---|
committer | Shih-wei Liao <sliao@google.com> | 2010-12-14 11:17:20 -0800 |
commit | 6b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bd (patch) | |
tree | 49b2bdb6cec0af7f5e0131c8d17d88d365382b8a /graphics | |
parent | 2bc248b698b17fd333beae828039a8bff7604a9f (diff) | |
download | frameworks_base-6b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bd.zip frameworks_base-6b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bd.tar.gz frameworks_base-6b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bd.tar.bz2 |
1. Add Context to a RenderScript or RenderScriptGL instance.
This is to allow RenderScript to better interact with the Android environment.
E.g., per-app cache.
2. Plumbing, testing.
3. Added getApplicationContext in RenderScript.java.
Change-Id: I85edeebe38825e20b2e86f4f4815689dfc332ef9
Diffstat (limited to 'graphics')
5 files changed, 36 insertions, 20 deletions
diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java index 0211a4a..507f41f 100644 --- a/graphics/java/android/renderscript/RSSurfaceView.java +++ b/graphics/java/android/renderscript/RSSurfaceView.java @@ -119,7 +119,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback } public RenderScriptGL createRenderScriptGL(RenderScriptGL.SurfaceConfig sc) { - RenderScriptGL rs = new RenderScriptGL(sc); + RenderScriptGL rs = new RenderScriptGL(this.getContext(), sc); setRenderScriptGL(rs); return rs; } @@ -137,4 +137,3 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback return mRS; } } - diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index c6dcff5..5f93f5b 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -18,6 +18,7 @@ package android.renderscript; import java.lang.reflect.Field; +import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Config; @@ -42,9 +43,9 @@ public class RenderScript { @SuppressWarnings({"UnusedDeclaration", "deprecation"}) static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV; + private Context mApplicationContext; - - /* + /* * We use a class initializer to allow the native code to cache some * field offsets. */ @@ -416,9 +417,9 @@ public class RenderScript { synchronized void nScriptCSetScript(byte[] script, int offset, int length) { rsnScriptCSetScript(mContext, script, offset, length); } - native int rsnScriptCCreate(int con, String val); - synchronized int nScriptCCreate(String val) { - return rsnScriptCCreate(mContext, val); + native int rsnScriptCCreate(int con, String val, String cacheDir); + synchronized int nScriptCCreate(String resName, String cacheDir) { + return rsnScriptCCreate(mContext, resName, cacheDir); } native void rsnSamplerBegin(int con); @@ -776,17 +777,27 @@ public class RenderScript { } } - RenderScript() { + RenderScript(Context ctx) { + mApplicationContext = ctx.getApplicationContext(); } /** - * Create a basic RenderScript context. + * Gets the application context associated with the RenderScript context. * + * @return The application context. + */ + public final Context getApplicationContext() { + return mApplicationContext; + } + + /** + * Create a basic RenderScript context. * + * @param ctx The context. * @return RenderScript */ - public static RenderScript create() { - RenderScript rs = new RenderScript(); + public static RenderScript create(Context ctx) { + RenderScript rs = new RenderScript(ctx); rs.mDev = rs.nDeviceCreate(); rs.mContext = rs.nContextCreate(rs.mDev, 0); diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java index 0886db4..5adb682 100644 --- a/graphics/java/android/renderscript/RenderScriptGL.java +++ b/graphics/java/android/renderscript/RenderScriptGL.java @@ -18,6 +18,7 @@ package android.renderscript; import java.lang.reflect.Field; +import android.content.Context; import android.graphics.PixelFormat; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -168,10 +169,11 @@ public class RenderScriptGL extends RenderScript { /** * Construct a new RenderScriptGL context. * - * + * @param ctx The context. * @param sc The desired format of the primart rendering surface. */ - public RenderScriptGL(SurfaceConfig sc) { + public RenderScriptGL(Context ctx, SurfaceConfig sc) { + super(ctx); mSurfaceConfig = new SurfaceConfig(sc); mSurface = null; @@ -304,5 +306,3 @@ public class RenderScriptGL extends RenderScript { } } - - diff --git a/graphics/java/android/renderscript/ScriptC.java b/graphics/java/android/renderscript/ScriptC.java index 64ed75b..b10247c 100644 --- a/graphics/java/android/renderscript/ScriptC.java +++ b/graphics/java/android/renderscript/ScriptC.java @@ -16,9 +16,11 @@ package android.renderscript; +import android.content.Context; import android.content.res.Resources; import android.util.Log; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Map.Entry; @@ -76,6 +78,7 @@ public class ScriptC extends Script { rs.nScriptCBegin(); rs.nScriptCSetScript(pgm, 0, pgmLength); Log.v(TAG, "Create script for resource = " + resources.getResourceName(resourceID)); - return rs.nScriptCCreate(resources.getResourceName(resourceID)); + String cacheDir = rs.getApplicationContext().getCacheDir().toString(); + return rs.nScriptCCreate(resources.getResourceName(resourceID), cacheDir); } } diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index 04a7b41..a8343b3 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -902,11 +902,15 @@ exit: } static jint -nScriptCCreate(JNIEnv *_env, jobject _this, RsContext con, jstring resName) +nScriptCCreate(JNIEnv *_env, jobject _this, RsContext con, jstring resName, jstring cacheDir) { LOG_API("nScriptCCreate, con(%p)", con); const char* resNameUTF = _env->GetStringUTFChars(resName, NULL); - return (jint)rsScriptCCreate(con, resNameUTF); + const char* cacheDirUTF = _env->GetStringUTFChars(cacheDir, NULL); + jint i = (jint)rsScriptCCreate(con, resNameUTF, cacheDirUTF); + _env->ReleaseStringUTFChars(resName, resNameUTF); + _env->ReleaseStringUTFChars(cacheDir, cacheDirUTF); + return i; } // --------------------------------------------------------------------------- @@ -1297,7 +1301,7 @@ static JNINativeMethod methods[] = { {"rsnScriptCBegin", "(I)V", (void*)nScriptCBegin }, {"rsnScriptCSetScript", "(I[BII)V", (void*)nScriptCSetScript }, -{"rsnScriptCCreate", "(ILjava/lang/String;)I", (void*)nScriptCCreate }, +{"rsnScriptCCreate", "(ILjava/lang/String;Ljava/lang/String;)I", (void*)nScriptCCreate }, {"rsnProgramStoreBegin", "(III)V", (void*)nProgramStoreBegin }, {"rsnProgramStoreDepthFunc", "(II)V", (void*)nProgramStoreDepthFunc }, @@ -1372,4 +1376,3 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) bail: return result; } - |