1ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray/*
2ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Copyright (C) 2013 The Android Open Source Project
3ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray *
4ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Licensed under the Apache License, Version 2.0 (the "License");
5ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * you may not use this file except in compliance with the License.
6ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * You may obtain a copy of the License at
7ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray *
8ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray *      http://www.apache.org/licenses/LICENSE-2.0
9ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray *
10ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Unless required by applicable law or agreed to in writing, software
11ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * distributed under the License is distributed on an "AS IS" BASIS,
12ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * See the License for the specific language governing permissions and
14ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * limitations under the License.
15ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray */
16ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
17ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murraypackage android.support.v8.renderscript;
18ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
19ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport java.io.IOException;
20ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport java.io.InputStream;
21ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.content.res.Resources;
22ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.content.res.AssetManager;
23ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.graphics.Bitmap;
24ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.graphics.BitmapFactory;
25ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.view.Surface;
26ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.util.Log;
27ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.util.TypedValue;
28ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
29ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayclass AllocationThunker extends Allocation {
30ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    android.renderscript.Allocation mN;
31ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    //Allocation mAdaptedAllocation;
32ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
33ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    android.renderscript.Allocation getNObj() {
34ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return mN;
35ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
36ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
37ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static android.renderscript.Allocation.MipmapControl
38ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        convertMipmapControl(MipmapControl mc) {
39ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
40ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        switch(mc) {
41ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        case MIPMAP_NONE:
42ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return android.renderscript.Allocation.MipmapControl.MIPMAP_NONE;
43ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        case MIPMAP_FULL:
44ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return android.renderscript.Allocation.MipmapControl.MIPMAP_FULL;
45ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        case MIPMAP_ON_SYNC_TO_TEXTURE:
46ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return android.renderscript.Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE;
47ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
48ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return null;
49ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
50ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
51ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public Type getType() {
52ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return TypeThunker.find(mN.getType());
53ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
54ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
55ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public Element getElement() {
56ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        return getType().getElement();
57ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
58ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
59ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public int getUsage() {
60d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
61d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            return mN.getUsage();
62d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
63d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
64d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
65ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
66ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
67ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public int getBytesSize() {
68d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
69d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            return mN.getBytesSize();
70d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
71d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
72d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
73ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
74ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
75ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    AllocationThunker(RenderScript rs, Type t, int usage, android.renderscript.Allocation na) {
76ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        super(0, rs, t, usage);
77ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
78ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mType = t;
79ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mUsage = usage;
80ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mN = na;
81ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
82ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
83ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void syncAll(int srcLocation) {
84d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
85d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.syncAll(srcLocation);
86d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
87d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
88d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
89ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
90ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
91ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void ioSend() {
92d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
93d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.ioSend();
94d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
95d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
96d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
97ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
98ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
99ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void ioReceive() {
100d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
101d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.ioReceive();
102d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
103d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
104d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
105ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
106ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
107ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(BaseObj[] d) {
108ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        if (d == null) {
109ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
110ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
111ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        android.renderscript.BaseObj[] dN = new android.renderscript.BaseObj[d.length];
112ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        for (int i = 0; i < d.length; i++) {
113ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            dN[i] = d[i].getNObj();
114ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
115d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
116d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFrom(dN);
117d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
118d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
119d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
120ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
121ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
122ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFromUnchecked(int[] d) {
123d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
124d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFromUnchecked(d);
125d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
126d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
127d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
128ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
129ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFromUnchecked(short[] d) {
130d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
131d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFromUnchecked(d);
132d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
133d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
134d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
135ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
136ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFromUnchecked(byte[] d) {
137d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
138d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFromUnchecked(d);
139d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
140d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
141d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
142ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
143ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFromUnchecked(float[] d) {
144d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
145d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFromUnchecked(d);
146d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
147d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
148d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
149ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
150ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
151ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(int[] d) {
152d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
153d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFrom(d);
154d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
155d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
156d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
157ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
158ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(short[] d) {
159d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
160d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFrom(d);
161d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
162d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
163d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
164ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
165ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(byte[] d) {
166d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
167d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFrom(d);
168d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
169d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
170d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
171ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
172ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(float[] d) {
173d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
174d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFrom(d);
175d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
176d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
177d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
178ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
179ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(Bitmap b) {
180d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
181d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFrom(b);
182d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
183d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
184d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
185ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
186ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyFrom(Allocation a) {
187ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        AllocationThunker at = (AllocationThunker)a;
188d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
189d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyFrom(at.mN);
190d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
191d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
192d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
193ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
194ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
195ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
196ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setFromFieldPacker(int xoff, FieldPacker fp) {
197d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
19895730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            // Must construct actual FieldPacker from scratch, since we don't
19995730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            // know how many bytes were actually used.
20095730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            byte[] data = fp.getData();
20195730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            int fp_length = fp.getPos();
202d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            android.renderscript.FieldPacker nfp =
20395730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines                new android.renderscript.FieldPacker(fp_length);
20495730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            for (int i = 0; i < fp_length; i++) {
20595730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines                nfp.addI8(data[i]);
20695730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            }
207d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.setFromFieldPacker(xoff, nfp);
208d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
209d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
210d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
211ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
212ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void setFromFieldPacker(int xoff, int component_number, FieldPacker fp) {
213d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
21495730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            // Must construct actual FieldPacker from scratch, since we don't
21595730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            // know how many bytes were actually used.
21695730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            byte[] data = fp.getData();
21795730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            int fp_length = fp.getPos();
218d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            android.renderscript.FieldPacker nfp =
21995730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines                new android.renderscript.FieldPacker(fp_length);
22095730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            for (int i = 0; i < fp_length; i++) {
22195730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines                nfp.addI8(data[i]);
22295730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines            }
223d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.setFromFieldPacker(xoff, component_number, nfp);
224d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
225d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
226d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
227ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
228ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
229ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void generateMipmaps() {
230d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
231d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.generateMipmaps();
232d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
233d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
234d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
235ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
236ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
237ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFromUnchecked(int off, int count, int[] d) {
238d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
239d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy1DRangeFromUnchecked(off, count, d);
240d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
241d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
242d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
243ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
244ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFromUnchecked(int off, int count, short[] d) {
245d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
246d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy1DRangeFromUnchecked(off, count, d);
247d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
248d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
249d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
250ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
251ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFromUnchecked(int off, int count, byte[] d) {
252d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
253d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy1DRangeFromUnchecked(off, count, d);
254d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
255d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
256d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
257ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
258ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFromUnchecked(int off, int count, float[] d) {
259d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
260d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy1DRangeFromUnchecked(off, count, d);
261d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
262d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
263d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
264ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
265ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
266ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, int[] d) {
267d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
268d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy1DRangeFrom(off, count, d);
269d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
270d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
271d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
272ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
273ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, short[] d) {
274d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
275d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy1DRangeFrom(off, count, d);
276d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
277d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
278d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
279ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
280ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, byte[] d) {
281d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
282d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy1DRangeFrom(off, count, d);
283d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
284d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
285d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
286ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
287ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, float[] d) {
288d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
289d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy1DRangeFrom(off, count, d);
290d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
291d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
292d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
293ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
294ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
295ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy1DRangeFrom(int off, int count, Allocation data, int dataOff) {
296d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
297d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            AllocationThunker at = (AllocationThunker)data;
298d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy1DRangeFrom(off, count, at.mN, dataOff);
299d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
300d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
301d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
302ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
303ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
304ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, byte[] data) {
305d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
306d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy2DRangeFrom(xoff, yoff, w, h, data);
307d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
308d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
309d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
310ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
311ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, short[] data) {
312d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
313d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy2DRangeFrom(xoff, yoff, w, h, data);
314d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
315d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
316d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
317ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
318ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, int[] data) {
319d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
320d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy2DRangeFrom(xoff, yoff, w, h, data);
321d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
322d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
323d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
324ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
325ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h, float[] data) {
326d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
327d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy2DRangeFrom(xoff, yoff, w, h, data);
328d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
329d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
330d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
331ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
332ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
333ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, int w, int h,
334ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                Allocation data, int dataXoff, int dataYoff) {
335d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
336d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            AllocationThunker at = (AllocationThunker)data;
337d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy2DRangeFrom(xoff, yoff, w, h, at.mN, dataXoff, dataYoff);
338d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
339d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
340d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
341ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
342ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copy2DRangeFrom(int xoff, int yoff, Bitmap data) {
343d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
344d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copy2DRangeFrom(xoff, yoff, data);
345d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
346d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
347d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
348ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
349ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
350ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
351ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(Bitmap b) {
352d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
353d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyTo(b);
354d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
355d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
356d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
357ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
358ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(byte[] d) {
359d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
360d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyTo(d);
361d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
362d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
363d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
364ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
365ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(short[] d) {
366d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
367d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyTo(d);
368d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
369d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
370d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
371ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
372ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(int[] d) {
373d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
374d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyTo(d);
375d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
376d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
377d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
378ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
379ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    public void copyTo(float[] d) {
380d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
381d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            mN.copyTo(d);
382d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
383d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
384d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
385ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
386ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
387ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    // creation
388ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
389ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
390ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static {
391ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        mBitmapOptions.inScaled = false;
392ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
393ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
394ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createTyped(RenderScript rs, Type type, MipmapControl mips, int usage) {
395ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
396ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        TypeThunker tt = (TypeThunker)type;
397ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
398d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
399d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            android.renderscript.Allocation a =
400d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                android.renderscript.Allocation.createTyped(rst.mN, tt.mN,
401d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                                                            convertMipmapControl(mips),
402d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                                                            usage);
403d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            return new AllocationThunker(rs, type, usage, a);
404d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
405d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
406d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
407ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
408ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
409ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createFromBitmap(RenderScript rs, Bitmap b,
410ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                              MipmapControl mips,
411ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                              int usage) {
412ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
413ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
414d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
415d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            android.renderscript.Allocation a =
416d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                android.renderscript.Allocation.createFromBitmap(rst.mN, b,
417d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                                                                 convertMipmapControl(mips),
418d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                                                                 usage);
419d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            TypeThunker tt = new TypeThunker(rs, a.getType());
420d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            return new AllocationThunker(rs, tt, usage, a);
421d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray
422d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
423d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
424d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
425ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
426ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
427ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createCubemapFromBitmap(RenderScript rs, Bitmap b,
428ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                     MipmapControl mips,
429ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                     int usage) {
430ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
431d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
432d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            android.renderscript.Allocation a =
433d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                    android.renderscript.Allocation.createCubemapFromBitmap(
434d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                    rst.mN, b, convertMipmapControl(mips), usage);
435d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            TypeThunker tt = new TypeThunker(rs, a.getType());
436d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            return new AllocationThunker(rs, tt, usage, a);
437d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
438d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
439d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
440ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
441ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
442ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createCubemapFromCubeFaces(RenderScript rs,
443ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap xpos,
444ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap xneg,
445ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap ypos,
446ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap yneg,
447ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap zpos,
448ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        Bitmap zneg,
449ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        MipmapControl mips,
450ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                        int usage) {
451ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
452d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
453d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            android.renderscript.Allocation a =
454d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                    android.renderscript.Allocation.createCubemapFromCubeFaces(
455d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                    rst.mN, xpos, xneg, ypos, yneg, zpos, zneg,
456d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                    convertMipmapControl(mips), usage);
457d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            TypeThunker tt = new TypeThunker(rs, a.getType());
458d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            return new AllocationThunker(rs, tt, usage, a);
459d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
460d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
461d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
462ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
463ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
464ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createFromBitmapResource(RenderScript rs,
465ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                      Resources res,
466ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                      int id,
467ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                      MipmapControl mips,
468ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                                      int usage) {
469ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
470ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
471d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
472d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            android.renderscript.Allocation a =
473d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                    android.renderscript.Allocation.createFromBitmapResource(
474d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                    rst.mN, res, id, convertMipmapControl(mips), usage);
475d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            TypeThunker tt = new TypeThunker(rs, a.getType());
476d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            return new AllocationThunker(rs, tt, usage, a);
477d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
478d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
479d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
480ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
481ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
482ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createFromString(RenderScript rs,
483ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                              String str,
484ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                              int usage) {
485ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
486d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
487d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            android.renderscript.Allocation a =
488d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                    android.renderscript.Allocation.createFromString(
489d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                    rst.mN, str, usage);
490d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            TypeThunker tt = new TypeThunker(rs, a.getType());
491d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            return new AllocationThunker(rs, tt, usage, a);
492d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException e) {
493d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(e);
494d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
495ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
496ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
497ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    static public Allocation createSized(RenderScript rs, Element e,
498ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray                                         int count, int usage) {
499ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        RenderScriptThunker rst = (RenderScriptThunker)rs;
500ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        ElementThunker et = (ElementThunker) e;
501d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        try {
502d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            android.renderscript.Allocation a =
503d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                android.renderscript.Allocation.createSized
504d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray                (rst.mN, (android.renderscript.Element)e.getNObj(), count, usage);
505d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            TypeThunker tt = new TypeThunker(rs, a.getType());
506d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            return new AllocationThunker(rs, tt, usage, a);
507d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        } catch (android.renderscript.RSRuntimeException exc) {
508d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray            throw ExceptionThunker.convertException(exc);
509d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray        }
510ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    }
511ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
51295730ed847182c0b424f87d14d4ce276496dfa66Stephen Hines}
513