198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/* 298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Copyright (C) 2012 The Android Open Source Project 398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * you may not use this file except in compliance with the License. 698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * You may obtain a copy of the License at 798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 1098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Unless required by applicable law or agreed to in writing, software 1198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * See the License for the specific language governing permissions and 1498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * limitations under the License. 1598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 1698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 1798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspackage android.support.v8.renderscript; 1898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 19ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsimport android.util.SparseArray; 20ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 2198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/** 2298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 2398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams **/ 2498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspublic class Script extends BaseObj { 25ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 26ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams /** 27ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * KernelID is an identifier for a Script + root function pair. It is used 28ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * as an identifier for ScriptGroup creation. 29ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 30ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * This class should not be directly created. Instead use the method in the 31ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * reflected or intrinsic code "getKernelID_funcname()". 32ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 33ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams */ 34ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams public static final class KernelID extends BaseObj { 35ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams Script mScript; 36ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams int mSlot; 37ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams int mSig; 38ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams KernelID(int id, RenderScript rs, Script s, int slot, int sig) { 39ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams super(id, rs); 40ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mScript = s; 41ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mSlot = slot; 42ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mSig = sig; 43ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 44ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 45ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 46ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams private final SparseArray<KernelID> mKIDs = new SparseArray<KernelID>(); 47ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams /** 48ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Only to be used by generated reflected classes. 49ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 50ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 51ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * @param slot 52ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * @param sig 53ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * @param ein 54ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * @param eout 55ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 56ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * @return KernelID 57ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams */ 58ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams protected KernelID createKernelID(int slot, int sig, Element ein, Element eout) { 59ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams KernelID k = mKIDs.get(slot); 60ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams if (k != null) { 61ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return k; 62ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 63ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 64ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams int id = mRS.nScriptKernelIDCreate(getID(mRS), slot, sig); 65ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams if (id == 0) { 66ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams throw new RSDriverException("Failed to create KernelID"); 67ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 68ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 69ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams k = new KernelID(id, mRS, this, slot, sig); 70ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mKIDs.put(slot, k); 71ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return k; 72ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 73ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 74ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams /** 75ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * FieldID is an identifier for a Script + exported field pair. It is used 76ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * as an identifier for ScriptGroup creation. 77ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 78ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * This class should not be directly created. Instead use the method in the 79ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * reflected or intrinsic code "getFieldID_funcname()". 80ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 81ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams */ 82ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams public static final class FieldID extends BaseObj { 83ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams Script mScript; 84ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams int mSlot; 85ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams FieldID(int id, RenderScript rs, Script s, int slot) { 86ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams super(id, rs); 87ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mScript = s; 88ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mSlot = slot; 89ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 90ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 91ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 92ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams private final SparseArray<FieldID> mFIDs = new SparseArray(); 93ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams /** 94ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Only to be used by generated reflected classes. 95ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 96ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * @param slot 97ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * @param e 98ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 99ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * @return FieldID 100ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams */ 101ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams protected FieldID createFieldID(int slot, Element e) { 102ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams FieldID f = mFIDs.get(slot); 103ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams if (f != null) { 104ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return f; 105ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 106ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 107ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams int id = mRS.nScriptFieldIDCreate(getID(mRS), slot); 108ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams if (id == 0) { 109ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams throw new RSDriverException("Failed to create FieldID"); 110ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 111ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 112ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams f = new FieldID(id, mRS, this, slot); 113ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mFIDs.put(slot, f); 114ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return f; 115ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 116ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 117ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 11898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 11998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 12098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 12198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param slot 12298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 12398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams protected void invoke(int slot) { 12498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptInvoke(getID(mRS), slot); 12598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 12698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 12798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 12898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 12998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 13098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param slot 13198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param v 13298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 13398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams protected void invoke(int slot, FieldPacker v) { 13498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (v != null) { 13598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptInvokeV(getID(mRS), slot, v.getData()); 13698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } else { 13798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptInvoke(getID(mRS), slot); 13898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 13998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 14098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 14198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 14298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 14398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 14498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param slot 14598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param ain 14698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param aout 14798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param v 14898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 14998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) { 15098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (ain == null && aout == null) { 15198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSIllegalArgumentException( 15298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams "At least one of ain or aout is required to be non-null."); 15398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 15498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams int in_id = 0; 15598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (ain != null) { 15698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams in_id = ain.getID(mRS); 15798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 15898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams int out_id = 0; 15998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (aout != null) { 16098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams out_id = aout.getID(mRS); 16198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 16298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams byte[] params = null; 16398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (v != null) { 16498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams params = v.getData(); 16598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 16698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptForEach(getID(mRS), slot, in_id, out_id, params); 16798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 16898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 16998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 17098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams Script(int id, RenderScript rs) { 17198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super(id, rs); 17298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 17398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 17498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 17598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 17698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 17798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 17898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param va 17998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param slot 18098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 18198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void bindAllocation(Allocation va, int slot) { 18298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.validate(); 18398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (va != null) { 18498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptBindAllocation(getID(mRS), va.getID(mRS), slot); 18598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } else { 18698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptBindAllocation(getID(mRS), 0, slot); 18798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 18898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 18998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 19098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 19198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 19298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 19398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param index 19498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param v 19598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 19698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setVar(int index, float v) { 19798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptSetVarF(getID(mRS), index, v); 19898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 19998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 20098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 20198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 20298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 20398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param index 20498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param v 20598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 20698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setVar(int index, double v) { 20798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptSetVarD(getID(mRS), index, v); 20898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 20998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 21098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 21198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 21298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 21398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param index 21498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param v 21598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 21698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setVar(int index, int v) { 21798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptSetVarI(getID(mRS), index, v); 21898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 21998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 22098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 22198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 22298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 22398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param index 22498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param v 22598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 22698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setVar(int index, long v) { 22798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptSetVarJ(getID(mRS), index, v); 22898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 22998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 23098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 23198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 23298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 23398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param index 23498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param v 23598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 23698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setVar(int index, boolean v) { 23798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptSetVarI(getID(mRS), index, v ? 1 : 0); 23898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 23998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 24098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 24198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 24298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 24398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param index 24498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param o 24598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 24698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setVar(int index, BaseObj o) { 24798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS)); 24898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 24998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 25098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 25198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 25298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 25398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param index 25498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param v 25598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 25698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setVar(int index, FieldPacker v) { 25798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptSetVarV(getID(mRS), index, v.getData()); 25898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 25998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 26098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 26198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Only intended for use by generated reflected code. 26298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 26398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param index 26498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param v 26598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param e 26698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param dims 26798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 26898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setVar(int index, FieldPacker v, Element e, int[] dims) { 26998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), e.getID(mRS), dims); 27098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 27198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 27298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setTimeZone(String timeZone) { 27398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.validate(); 27498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams try { 27598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS.nScriptSetTimeZone(getID(mRS), timeZone.getBytes("UTF-8")); 27698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } catch (java.io.UnsupportedEncodingException e) { 27798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RuntimeException(e); 27898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 27998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 28098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 28198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public static class Builder { 28298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams RenderScript mRS; 28398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 28498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams Builder(RenderScript rs) { 28598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mRS = rs; 28698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 28798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 28898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 28998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 29098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public static class FieldBase { 29198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams protected Element mElement; 29298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams protected Allocation mAllocation; 29398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 29498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams protected void init(RenderScript rs, int dimx) { 29598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT); 29698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 29798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 29898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams protected void init(RenderScript rs, int dimx, int usages) { 29998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT | usages); 30098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 30198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 30298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams protected FieldBase() { 30398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 30498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 30598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public Element getElement() { 30698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams return mElement; 30798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 30898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 30998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public Type getType() { 31098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams return mAllocation.getType(); 31198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 31298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 31398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public Allocation getAllocation() { 31498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams return mAllocation; 31598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 31698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 31798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams //@Override 31898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void updateAllocation() { 31998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 32098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 32198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams} 32298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 323