diff options
author | Jason Sams <rjsams@android.com> | 2011-04-27 16:33:11 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2011-04-27 16:33:11 -0700 |
commit | 6e494d3ab606be8c06f8d4930fbec572bbfa15c2 (patch) | |
tree | ffd17bfd895705529e4542280e78dd1d6aa8a15a /graphics | |
parent | a08526ac42b3da98926ae921a6d8cfb9bbc90553 (diff) | |
download | frameworks_base-6e494d3ab606be8c06f8d4930fbec572bbfa15c2.zip frameworks_base-6e494d3ab606be8c06f8d4930fbec572bbfa15c2.tar.gz frameworks_base-6e494d3ab606be8c06f8d4930fbec572bbfa15c2.tar.bz2 |
Add dalvik code for forEach.
Change-Id: I26533fc553315b99b8f177ab62d9735a177b26b0
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 10 | ||||
-rw-r--r-- | graphics/java/android/renderscript/Script.java | 29 | ||||
-rw-r--r-- | graphics/jni/android_renderscript_RenderScript.cpp | 20 |
3 files changed, 59 insertions, 0 deletions
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index 754ebfb..4c505ec 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -420,6 +420,16 @@ public class RenderScript { validate(); rsnScriptInvoke(mContext, id, slot); } + native void rsnScriptForEach(int con, int id, int slot, int ain, int aout, byte[] params); + native void rsnScriptForEach(int con, int id, int slot, int ain, int aout); + synchronized void nScriptForEach(int id, int slot, int ain, int aout, byte[] params) { + validate(); + if (params == null) { + rsnScriptForEach(mContext, id, slot, ain, aout); + } else { + rsnScriptForEach(mContext, id, slot, ain, aout, params); + } + } native void rsnScriptInvokeV(int con, int id, int slot, byte[] params); synchronized void nScriptInvokeV(int id, int slot, byte[] params) { validate(); diff --git a/graphics/java/android/renderscript/Script.java b/graphics/java/android/renderscript/Script.java index 56abba5..11aa134 100644 --- a/graphics/java/android/renderscript/Script.java +++ b/graphics/java/android/renderscript/Script.java @@ -43,6 +43,35 @@ public class Script extends BaseObj { } } + /** + * @hide + * Only intended for use by generated reflected code. + * + * @param slot + * @param ain + * @param aout + * @param v + */ + protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) { + if (ain == null && aout == null) { + throw new RSIllegalArgumentException( + "At least one of ain or aout is required to be non-null."); + } + int in_id = 0; + if (ain != null) { + in_id = ain.getID(); + } + int out_id = 0; + if (aout != null) { + out_id = aout.getID(); + } + byte[] params = null; + if (v != null) { + params = v.getData(); + } + mRS.nScriptForEach(getID(), slot, in_id, out_id, params); + } + Script(int id, RenderScript rs) { super(id, rs); diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index c3f2360..3f6f8c3 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -866,6 +866,24 @@ nScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slo _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); } +static void +nScriptForEach(JNIEnv *_env, jobject _this, RsContext con, + jint script, jint slot, jint ain, jint aout) +{ + LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); + rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0); +} +static void +nScriptForEachV(JNIEnv *_env, jobject _this, RsContext con, + jint script, jint slot, jint ain, jint aout, jbyteArray params) +{ + LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot); + jint len = _env->GetArrayLength(params); + jbyte *ptr = _env->GetByteArrayElements(params, NULL); + rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len); + _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT); +} + // ----------------------------------- @@ -1235,6 +1253,8 @@ static JNINativeMethod methods[] = { {"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone }, {"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke }, {"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV }, +{"rsnScriptForEach", "(IIIII)V", (void*)nScriptForEach }, +{"rsnScriptForEach", "(IIIII[B)V", (void*)nScriptForEachV }, {"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI }, {"rsnScriptSetVarJ", "(IIIJ)V", (void*)nScriptSetVarJ }, {"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF }, |