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
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 @@
 }
 
 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 @@
 
 {"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 @@
 bail:
     return result;
 }
-