diff options
author | Yang Ni <yangni@google.com> | 2015-03-19 23:21:27 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-03-19 23:21:28 +0000 |
commit | d3e6428aea34ce3297123c63b4dd6223dac5d5a8 (patch) | |
tree | 2a4513dd9a1dfda8980da4cc12cf5dd550d08d0b /rs/java | |
parent | c077ee316e0f6f50ade552f51ae657a08e423eaa (diff) | |
parent | 8ff2980f31c0e21660606932eb65676e5107d624 (diff) | |
download | frameworks_base-d3e6428aea34ce3297123c63b4dd6223dac5d5a8.zip frameworks_base-d3e6428aea34ce3297123c63b4dd6223dac5d5a8.tar.gz frameworks_base-d3e6428aea34ce3297123c63b4dd6223dac5d5a8.tar.bz2 |
Merge "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; + } + } } |