FieldPacker.java revision eeb3042428fbe3a3cace554d3aca43b324904ad1
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
198b8070ded084da1f0a34f3ed2c54e501d2e56f6cTim Murrayimport android.os.SystemProperties;
200f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hinesimport android.support.v8.renderscript.RenderScript;
2198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
2298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/**
2398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Utility class for packing arguments and structures from Android system objects to
247d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * RenderScript objects.
257d435ae5ba100be5710b685653cc351cab159c11Stephen Hines *
267d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * This class is only intended to be used to support the
277d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * reflected code generated by the RS tool chain.  It should not
287d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * be called directly.
2998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *
3098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams **/
3198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspublic class FieldPacker {
32eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray    private FieldPackerThunker mN;
33ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
3498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public FieldPacker(int len) {
3598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = 0;
3698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mLen = len;
3798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData = new byte[len];
380f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
39eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN = new FieldPackerThunker(len);
40ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
4198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
4298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
4398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void align(int v) {
440f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
45ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.align(v);
46ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
47ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
4898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v <= 0) || ((v & (v - 1)) != 0)) {
4998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
5098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
5198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
5298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        while ((mPos & (v - 1)) != 0) {
5398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            mData[mPos++] = 0;
5498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
5598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
5698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
5798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void reset() {
580f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
59ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.reset();
60ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
61ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
6298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = 0;
6398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
6498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void reset(int i) {
650f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
66ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.reset(i);
67ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
68ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
6998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((i < 0) || (i >= mLen)) {
7098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
7198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
7298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = i;
7398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
7498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
7598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void skip(int i) {
760f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
77ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.skip(i);
78ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
79ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
8098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        int res = mPos + i;
8198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((res < 0) || (res > mLen)) {
8298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
8398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
8498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = res;
8598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
8698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
8798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(byte v) {
880f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
89ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI8(v);
90ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
91ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
9298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = v;
9398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
9498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
9598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(short v) {
960f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
97ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI16(v);
98ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
99ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
10098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(2);
10198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
10298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v >> 8);
10398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
10498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
10598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(int v) {
1060f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
107ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI32(v);
108ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
109ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
11098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(4);
11198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
11298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
11398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
11498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
11598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
11698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
11798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(long v) {
1180f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
119ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI64(v);
120ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
121ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
12298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(8);
12398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
12498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
12598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
12698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
12798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
12898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
12998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
13098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
13198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
13298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
13398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(short v) {
1340f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
135ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU8(v);
136ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
137ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
13898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v < 0) || (v > 0xff)) {
13998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
14098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
14198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)v;
14298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
14398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
14498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(int v) {
1450f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
146ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU16(v);
147ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
148ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
14998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v < 0) || (v > 0xffff)) {
15098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            android.util.Log.e("rs", "FieldPacker.addU16( " + v + " )");
15198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
15298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
15398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(2);
15498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
15598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v >> 8);
15698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
15798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
15898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(long v) {
1590f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
160ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU32(v);
161ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
162ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
16398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v < 0) || (v > 0xffffffffL)) {
16498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            android.util.Log.e("rs", "FieldPacker.addU32( " + v + " )");
16598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
16698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
16798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(4);
16898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
16998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
17098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
17198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
17298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
17398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
17498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(long v) {
1750f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
176ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU64(v);
177ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
178ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
17998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if (v < 0) {
18098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            android.util.Log.e("rs", "FieldPacker.addU64( " + v + " )");
18198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
18298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
18398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(8);
18498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
18598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
18698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
18798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
18898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
18998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
19098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
19198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
19298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
19398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
19498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(float v) {
1950f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
196ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF32(v);
197ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
198ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
19998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(Float.floatToRawIntBits(v));
20098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
20198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
20298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(double v) {
2030f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
204ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF64(v);
205ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
206ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
20798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(Double.doubleToRawLongBits(v));
20898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
20998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
21098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addObj(BaseObj obj) {
2110f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
212eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addObj(obj);
213ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
214ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
21598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if (obj != null) {
21698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addI32(obj.getID(null));
21798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        } else {
21898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addI32(0);
21998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
22098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
22198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
22298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(Float2 v) {
2230f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
224eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF32(v);
225ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
226ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
22798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.x);
22898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.y);
22998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
23098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(Float3 v) {
2310f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
232eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF32(v);
233ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
234ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
23598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.x);
23698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.y);
23798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.z);
23898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
23998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(Float4 v) {
2400f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
241eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF32(v);
242ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
243ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
24498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.x);
24598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.y);
24698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.z);
24798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.w);
24898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
24998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
25098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(Double2 v) {
2510f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
252eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF64(v);
253ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
254ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
25598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.x);
25698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.y);
25798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
25898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(Double3 v) {
2590f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
260eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF64(v);
261ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
262ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
26398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.x);
26498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.y);
26598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.z);
26698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
26798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(Double4 v) {
2680f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
269eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addF64(v);
270ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
271ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
27298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.x);
27398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.y);
27498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.z);
27598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.w);
27698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
27798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
27898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(Byte2 v) {
2790f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
280eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI8(v);
281ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
282ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
28398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.x);
28498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.y);
28598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
28698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(Byte3 v) {
2870f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
288eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI8(v);
289ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
290ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
29198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.x);
29298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.y);
29398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.z);
29498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
29598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(Byte4 v) {
2960f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
297eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI8(v);
298ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
299ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
30098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.x);
30198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.y);
30298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.z);
30398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.w);
30498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
30598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
30698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(Short2 v) {
3070f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
308eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU8(v);
309ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
310ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
31198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.x);
31298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.y);
31398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
31498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(Short3 v) {
3150f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
316eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU8(v);
317ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
318ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
31998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.x);
32098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.y);
32198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.z);
32298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
32398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(Short4 v) {
3240f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
325eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU8(v);
326ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
327ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
32898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.x);
32998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.y);
33098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.z);
33198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.w);
33298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
33398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
33498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(Short2 v) {
3350f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
336eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI16(v);
337ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
338ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
33998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.x);
34098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.y);
34198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
34298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(Short3 v) {
3430f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
344eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI16(v);
345ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
346ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
34798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.x);
34898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.y);
34998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.z);
35098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
35198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(Short4 v) {
3520f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
353eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI16(v);
354ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
355ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
35698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.x);
35798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.y);
35898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.z);
35998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.w);
36098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
36198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
36298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(Int2 v) {
3630f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
364eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU16(v);
365ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
366ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
36798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.x);
36898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.y);
36998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
37098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(Int3 v) {
3710f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
372eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU16(v);
373ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
374ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
37598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.x);
37698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.y);
37798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.z);
37898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
37998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(Int4 v) {
3800f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
381eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU16(v);
382ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
383ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
38498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.x);
38598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.y);
38698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.z);
38798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.w);
38898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
38998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
39098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(Int2 v) {
3910f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
392eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI32(v);
393ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
394ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
39598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.x);
39698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.y);
39798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
39898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(Int3 v) {
3990f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
400eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI32(v);
401ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
402ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
40398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.x);
40498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.y);
40598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.z);
40698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
40798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(Int4 v) {
4080f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
409eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI32(v);
410ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
411ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
41298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.x);
41398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.y);
41498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.z);
41598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.w);
41698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
41798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
41898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(Long2 v) {
4190f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
420eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU32(v);
421ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
422ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
42398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.x);
42498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.y);
42598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
42698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(Long3 v) {
4270f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
428eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU32(v);
429ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
430ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
43198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.x);
43298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.y);
43398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.z);
43498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
43598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(Long4 v) {
4360f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
437eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU32(v);
438ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
439ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
44098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.x);
44198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.y);
44298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.z);
44398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.w);
44498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
44598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
44698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(Long2 v) {
4470f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
448eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI64(v);
449ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
450ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
45198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.x);
45298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.y);
45398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
45498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(Long3 v) {
4550f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
456eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI64(v);
457ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
458ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
45998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.x);
46098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.y);
46198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.z);
46298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
46398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(Long4 v) {
4640f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
465eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addI64(v);
466ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
467ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
46898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.x);
46998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.y);
47098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.z);
47198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.w);
47298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
47398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
47498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(Long2 v) {
4750f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
476eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU64(v);
477ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
478ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
47998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.x);
48098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.y);
48198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
48298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(Long3 v) {
4830f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
484eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU64(v);
485ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
486ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
48798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.x);
48898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.y);
48998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.z);
49098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
49198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(Long4 v) {
4920f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
493eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addU64(v);
494ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
495ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
49698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.x);
49798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.y);
49898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.z);
49998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.w);
50098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
50198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
50298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addMatrix(Matrix4f v) {
5030f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
504eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addMatrix(v);
505ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
506ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
50798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        for (int i=0; i < v.mMat.length; i++) {
50898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addF32(v.mMat[i]);
50998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
51098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
51198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
51298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addMatrix(Matrix3f v) {
5130f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
514eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addMatrix(v);
515ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
516ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
51798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        for (int i=0; i < v.mMat.length; i++) {
51898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addF32(v.mMat[i]);
51998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
52098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
52198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
52298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addMatrix(Matrix2f v) {
5230f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
524eeb3042428fbe3a3cace554d3aca43b324904ad1Tim Murray            mN.addMatrix(v);
525ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
526ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
52798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        for (int i=0; i < v.mMat.length; i++) {
52898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addF32(v.mMat[i]);
52998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
53098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
53198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
53298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addBoolean(boolean v) {
5330f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
534ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addBoolean(v);
535ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
536ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
53798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8((byte)(v ? 1 : 0));
53898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
53998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
54098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public final byte[] getData() {
5410f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
542ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return mN.getData();
543ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
54498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        return mData;
54598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
54698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
54798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    private final byte mData[];
54898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    private int mPos;
54998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    private int mLen;
55098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
55198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams}
55298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
55398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
554