diff options
author | Yang Ni <yangni@google.com> | 2015-03-19 23:42:34 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-03-19 23:42:34 +0000 |
commit | 4778caae5065f792bb8b70c5465362aa1ae0065c (patch) | |
tree | 7deba5a4f7434c2d9e8132bbce1f238e66299bd9 /rs/java | |
parent | efadd572b93eee88e4b63feb6b2cc0741d900c76 (diff) | |
parent | 53699ec613acf76277b69db57bf2f378d0dc374a (diff) | |
download | frameworks_base-4778caae5065f792bb8b70c5465362aa1ae0065c.zip frameworks_base-4778caae5065f792bb8b70c5465362aa1ae0065c.tar.gz frameworks_base-4778caae5065f792bb8b70c5465362aa1ae0065c.tar.bz2 |
am 53699ec6: am d3e6428a: Merge "New API methods for Script Group"
* commit '53699ec613acf76277b69db57bf2f378d0dc374a':
New API methods for Script Group
Diffstat (limited to 'rs/java')
-rw-r--r-- | rs/java/android/renderscript/ScriptGroup2.java | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/rs/java/android/renderscript/ScriptGroup2.java b/rs/java/android/renderscript/ScriptGroup2.java index 2e171b6..4a56572 100644 --- a/rs/java/android/renderscript/ScriptGroup2.java +++ b/rs/java/android/renderscript/ScriptGroup2.java @@ -345,11 +345,22 @@ public class ScriptGroup2 extends BaseObj { /** @hide Pending Android public API approval. */ + public static final class Binding { + public Script.FieldID mField; + public Object mValue; + public Binding(Script.FieldID field, Object value) { + mField = field; + mValue = value; + } + } + + /** + @hide Pending Android public API approval. + */ public static final class Builder { RenderScript mRS; List<Closure> mClosures; List<UnboundValue> mInputs; - private static final String TAG = "ScriptGroup2.Builder"; public Builder(RenderScript rs) { @@ -378,10 +389,50 @@ public class ScriptGroup2 extends BaseObj { return unbound; } + public Closure addKernel(Script.KernelID k, Type returnType, Object... argsAndBindings) { + ArrayList<Object> args = new ArrayList<Object>(); + Map<Script.FieldID, Object> bindingMap = new HashMap<Script.FieldID, Object>(); + if (!seperateArgsAndBindings(argsAndBindings, args, bindingMap)) { + return null; + } + return addKernel(k, returnType, args.toArray(), bindingMap); + } + + public Closure addInvoke(Script.InvokeID invoke, Object... argsAndBindings) { + ArrayList<Object> args = new ArrayList<Object>(); + Map<Script.FieldID, Object> bindingMap = new HashMap<Script.FieldID, Object>(); + if (!seperateArgsAndBindings(argsAndBindings, args, bindingMap)) { + return null; + } + return addInvoke(invoke, args.toArray(), bindingMap); + } + public ScriptGroup2 create(Future... outputs) { ScriptGroup2 ret = new ScriptGroup2(mRS, mClosures, mInputs, outputs); return ret; } + private boolean seperateArgsAndBindings(Object[] argsAndBindings, + ArrayList<Object> args, + Map<Script.FieldID, Object> bindingMap) { + int i; + for (i = 0; i < argsAndBindings.length; i++) { + if (argsAndBindings[i] instanceof Binding) { + break; + } + args.add(argsAndBindings[i]); + } + + for (; i < argsAndBindings.length; i++) { + if (!(argsAndBindings[i] instanceof Binding)) { + return false; + } + Binding b = (Binding)argsAndBindings[i]; + bindingMap.put(b.mField, b.mValue); + } + + return true; + } + } } |