From be392ad35e29b17ed54fdbbbb8dd3e80fc1022b9 Mon Sep 17 00:00:00 2001 From: Yang Ni Date: Fri, 23 Jan 2015 17:16:02 -0800 Subject: Adds invocable functions to ScriptGroup This also includes InvokeID support Change-Id: I5b59df166ea30b309b8dd9623825ac0e72d03856 --- rs/java/android/renderscript/Script.java | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'rs/java/android/renderscript/Script.java') diff --git a/rs/java/android/renderscript/Script.java b/rs/java/android/renderscript/Script.java index eb1687a37a49..d35213057eef 100644 --- a/rs/java/android/renderscript/Script.java +++ b/rs/java/android/renderscript/Script.java @@ -65,6 +65,46 @@ public class Script extends BaseObj { return k; } + /** + * @hide Pending API review + * InvokeID is an identifier for an invoke function. It is used + * as an identifier for ScriptGroup creation. + * + * This class should not be directly created. Instead use the method in the + * reflected or intrinsic code "getInvokeID_funcname()". + * + */ + public static final class InvokeID extends BaseObj { + Script mScript; + int mSlot; + InvokeID(long id, RenderScript rs, Script s, int slot) { + super(id, rs); + mScript = s; + mSlot = slot; + } + } + + private final SparseArray mIIDs = new SparseArray(); + /** + * @hide Pending API review + * Only to be used by generated reflected classes. + */ + protected InvokeID createInvokeID(int slot) { + InvokeID i = mIIDs.get(slot); + if (i != null) { + return i; + } + + long id = mRS.nScriptInvokeIDCreate(getID(mRS), slot); + if (id == 0) { + throw new RSDriverException("Failed to create KernelID"); + } + + i = new InvokeID(id, mRS, this, slot); + mIIDs.put(slot, i); + return i; + } + /** * FieldID is an identifier for a Script + exported field pair. It is used * as an identifier for ScriptGroup creation. -- cgit v1.2.3