1648a1c137663ef7207684d0d7009dd5518942111Stephen Hines/*
2648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Copyright (C) 2015 The Android Open Source Project
3648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *
4648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
5648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * you may not use this file except in compliance with the License.
6648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * You may obtain a copy of the License at
7648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *
8648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *      http://www.apache.org/licenses/LICENSE-2.0
9648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *
10648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Unless required by applicable law or agreed to in writing, software
11648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
12648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * See the License for the specific language governing permissions and
14648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * limitations under the License.
15648a1c137663ef7207684d0d7009dd5518942111Stephen Hines */
16648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
17648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespackage com.android.rs.test_compatlegacy;
18648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
19648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.Context;
20648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.res.Resources;
21648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.support.v8.renderscript.*;
22648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport java.util.Random;
23648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
24648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespublic class UT_alloc_copyPadded extends UnitTest {
25648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Resources mRes;
26648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
27648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    protected UT_alloc_copyPadded(RSTestCore rstc, Resources res, Context ctx) {
28648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        super(rstc, "Allocation CopyTo Padded", ctx);
29648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        mRes = res;
30648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
31648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
32648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void run() {
33648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        RenderScript mRS = RenderScript.create(mCtx);
34648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
35648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Byte3_1D(mRS);
36648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Byte3_2D(mRS);
37648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Byte3_3D(mRS);
38648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
39648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Short3_1D(mRS);
40648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Short3_2D(mRS);
41648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Short3_3D(mRS);
42648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
43648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Int3_1D(mRS);
44648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Int3_2D(mRS);
45648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Int3_3D(mRS);
46648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
47648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Float3_1D(mRS);
48648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Float3_2D(mRS);
49648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Float3_3D(mRS);
50648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
51648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Double3_1D(mRS);
52648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Double3_2D(mRS);
53648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Double3_3D(mRS);
54648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
55648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Long3_1D(mRS);
56648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Long3_2D(mRS);
57648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_Long3_3D(mRS);
58648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
59648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
60648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeTo_Byte3(mRS);
61648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeTo_Short3(mRS);
62648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeTo_Int3(mRS);
63648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeTo_Float3(mRS);
64648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeTo_Long3(mRS);
65648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
66648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy2DRangeTo_Byte3(mRS);
67648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy2DRangeTo_Short3(mRS);
68648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy2DRangeTo_Int3(mRS);
69648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy2DRangeTo_Float3(mRS);
70648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy2DRangeTo_Long3(mRS);
71648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
72648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeToUnchecked_Byte3(mRS);
73648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeToUnchecked_Short3(mRS);
74648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeToUnchecked_Int3(mRS);
75648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeToUnchecked_Float3(mRS);
76648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testAllocation_copy1DRangeToUnchecked_Long3(mRS);
77648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
78648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        mRS.destroy();
79648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        passTest();
80648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
81648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
82648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Byte3_1D(RenderScript mRS) {
83648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
84648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
85648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
86648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
87648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] inArray = new byte[arr_len];
88648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] outArray = new byte[arr_len];
89648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        random.nextBytes(inArray);
90648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
91648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
92648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
93648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
94648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
95648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
96648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
97648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
98648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
99648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
100648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
101648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
102648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
103648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
104648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
105648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
106648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
107648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Byte1D TEST PASSED");
108648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
109648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
110648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
111648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
112648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
113648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Byte3_2D(RenderScript mRS) {
114648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
115648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
116648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
117648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * height * 3;
118648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
119648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] inArray = new byte[arr_len];
120648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] outArray = new byte[arr_len];
121648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        random.nextBytes(inArray);
122648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
123648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
124648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
125648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
126648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
127648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
128648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
129648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
130648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
131648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
132648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
133648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
134648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
135648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
136648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
137648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
138648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
139648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Byte2D TEST PASSED");
140648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
141648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
142648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
143648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
144648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
145648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Byte3_3D(RenderScript mRS) {
146648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
147648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int w = random.nextInt(32);
148648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int h = random.nextInt(32);
149648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int d = random.nextInt(32);
150648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = w * d * h * 3;
151648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
152648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] inArray = new byte[arr_len];
153648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] outArray = new byte[arr_len];
154648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        random.nextBytes(inArray);
155648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
156648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
157648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(w).setY(h).setZ(d);
158648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
159648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
160648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
161648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
162648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
163648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
164648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
165648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
166648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
167648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
168648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
169648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
170648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
171648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
172648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Byte3D TEST PASSED");
173648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
174648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
175648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
176648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
177648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
178648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Short3_1D(RenderScript mRS) {
179648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
180648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
181648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
182648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
183648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] inArray = new short[arr_len];
184648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] outArray = new short[arr_len];
185648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
186648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
187648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = (short)random.nextInt();
188648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
189648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
190648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
191648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
192648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
193648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
194648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
195648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
196648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
197648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
198648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
199648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
200648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
201648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
202648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
203648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
204648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
205648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
206648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Short1D TEST PASSED");
207648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
208648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
209648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
210648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
211648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
212648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Short3_2D(RenderScript mRS) {
213648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
214648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
215648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
216648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * height * 3;
217648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
218648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] inArray = new short[arr_len];
219648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] outArray = new short[arr_len];
220648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
221648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
222648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = (short)random.nextInt();
223648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
224648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
225648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
226648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
227648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
228648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
229648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
230648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
231648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
232648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
233648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
234648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
235648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
236648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
237648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
238648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
239648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
240648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
241648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Short2D TEST PASSED");
242648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
243648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
244648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
245648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
246648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
247648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Short3_3D(RenderScript mRS) {
248648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
249648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int w = random.nextInt(32);
250648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int h = random.nextInt(32);
251648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int d = random.nextInt(32);
252648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = w * d * h * 3;
253648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
254648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] inArray = new short[arr_len];
255648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] outArray = new short[arr_len];
256648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
257648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
258648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = (short)random.nextInt();
259648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
260648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
261648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
262648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(w).setY(h).setZ(d);
263648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
264648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
265648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
266648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
267648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
268648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
269648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
270648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
271648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
272648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
273648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
274648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
275648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
276648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
277648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Short3D TEST PASSED");
278648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
279648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
280648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
281648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
282648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
283648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Int3_1D(RenderScript mRS) {
284648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
285648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
286648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
287648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
288648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] inArray = new int[arr_len];
289648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] outArray = new int[arr_len];
290648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
291648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
292648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextInt();
293648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
294648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
295648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
296648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
297648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
298648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
299648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
300648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
301648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
302648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
303648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
304648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
305648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
306648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
307648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
308648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
309648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
310648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
311648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Int1D TEST PASSED");
312648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
313648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
314648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
315648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
316648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
317648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Int3_2D(RenderScript mRS) {
318648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
319648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
320648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
321648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * height * 3;
322648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
323648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] inArray = new int[arr_len];
324648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] outArray = new int[arr_len];
325648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
326648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
327648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextInt();
328648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
329648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
330648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
331648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
332648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
333648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
334648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
335648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
336648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
337648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
338648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
339648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
340648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
341648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
342648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
343648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
344648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
345648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
346648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Int2D TEST PASSED");
347648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
348648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
349648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
350648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
351648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
352648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Int3_3D(RenderScript mRS) {
353648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
354648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int w = random.nextInt(32);
355648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int h = random.nextInt(32);
356648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int d = random.nextInt(32);
357648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = w * d * h * 3;
358648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
359648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] inArray = new int[arr_len];
360648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] outArray = new int[arr_len];
361648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
362648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
363648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextInt();
364648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
365648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
366648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
367648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(w).setY(h).setZ(d);
368648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
369648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
370648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
371648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
372648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
373648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
374648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
375648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
376648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
377648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
378648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
379648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
380648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
381648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
382648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Int3D TEST PASSED");
383648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
384648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
385648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
386648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
387648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
388648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Float3_1D(RenderScript mRS) {
389648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
390648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
391648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
392648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
393648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] inArray = new float[arr_len];
394648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] outArray = new float[arr_len];
395648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
396648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
397648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextFloat();
398648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
399648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
400648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
401648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
402648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
403648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
404648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
405648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
406648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
407648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
408648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
409648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
410648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
411648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
412648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
413648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
414648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
415648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
416648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Float1D TEST PASSED");
417648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
418648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
419648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
420648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
421648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Float3_2D(RenderScript mRS) {
422648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
423648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
424648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
425648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * height * 3;
426648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
427648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] inArray = new float[arr_len];
428648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] outArray = new float[arr_len];
429648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
430648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
431648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextFloat();
432648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
433648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
434648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
435648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
436648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
437648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
438648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
439648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
440648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
441648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
442648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
443648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
444648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
445648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
446648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
447648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
448648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
449648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
450648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Float2D TEST PASSED");
451648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
452648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
453648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
454648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
455648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Float3_3D(RenderScript mRS) {
456648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
457648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int w = random.nextInt(32);
458648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int h = random.nextInt(32);
459648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int d = random.nextInt(32);
460648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = w * d * h * 3;
461648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
462648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] inArray = new float[arr_len];
463648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] outArray = new float[arr_len];
464648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
465648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
466648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextFloat();
467648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
468648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
469648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
470648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(w).setY(h).setZ(d);
471648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
472648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
473648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
474648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
475648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
476648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
477648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
478648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
479648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
480648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
481648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
482648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
483648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
484648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
485648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Float3D TEST PASSED");
486648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
487648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
488648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
489648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
490648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
491648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Double3_1D(RenderScript mRS) {
492648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
493648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
494648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
495648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
496648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        double[] inArray = new double[arr_len];
497648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        double[] outArray = new double[arr_len];
498648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
499648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
500648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = (double)random.nextFloat();
501648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
502648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
503648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F64_3(mRS));
504648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
505648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
506648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
507648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
508648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
509648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
510648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
511648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
512648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
513648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
514648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
515648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
516648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
517648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
518648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
519648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Double1D TEST PASSED");
520648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
521648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
522648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
523648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
524648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Double3_2D(RenderScript mRS) {
525648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
526648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
527648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
528648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * height * 3;
529648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
530648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        double[] inArray = new double[arr_len];
531648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        double[] outArray = new double[arr_len];
532648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
533648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
534648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = (double)random.nextFloat();
535648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
536648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
537648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F64_3(mRS));
538648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
539648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
540648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
541648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
542648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
543648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
544648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
545648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
546648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
547648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
548648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
549648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
550648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
551648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
552648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
553648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Double2D TEST PASSED");
554648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
555648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
556648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
557648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
558648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Double3_3D(RenderScript mRS) {
559648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
560648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int w = random.nextInt(32);
561648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int h = random.nextInt(32);
562648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int d = random.nextInt(32);
563648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = w * d * h * 3;
564648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
565648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        double[] inArray = new double[arr_len];
566648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        double[] outArray = new double[arr_len];
567648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
568648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
569648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = (double)random.nextFloat();
570648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
571648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
572648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F64_3(mRS));
573648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(w).setY(h).setZ(d);
574648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
575648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
576648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
577648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
578648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
579648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
580648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
581648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
582648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
583648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
584648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
585648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
586648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
587648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
588648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Double3D TEST PASSED");
589648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
590648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
591648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
592648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
593648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
594648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Long3_1D(RenderScript mRS) {
595648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
596648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
597648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
598648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
599648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] inArray = new long[arr_len];
600648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] outArray = new long[arr_len];
601648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
602648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
603648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextLong();
604648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
605648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
606648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
607648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
608648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
609648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
610648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
611648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
612648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
613648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
614648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
615648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
616648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
617648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
618648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
619648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
620648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
621648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
622648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Long1D TEST PASSED");
623648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
624648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
625648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
626648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
627648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
628648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Long3_2D(RenderScript mRS) {
629648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
630648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
631648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
632648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * height * 3;
633648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
634648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] inArray = new long[arr_len];
635648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] outArray = new long[arr_len];
636648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
637648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
638648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextLong();
639648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
640648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
641648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
642648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
643648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
644648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
645648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
646648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
647648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
648648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
649648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
650648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
651648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
652648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
653648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
654648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
655648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
656648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
657648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Long2D TEST PASSED");
658648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
659648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
660648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
661648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
662648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
663648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_Long3_3D(RenderScript mRS) {
664648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
665648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int w = random.nextInt(32);
666648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int h = random.nextInt(32);
667648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int d = random.nextInt(32);
668648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = w * d * h * 3;
669648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
670648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] inArray = new long[arr_len];
671648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] outArray = new long[arr_len];
672648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
673648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
674648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextLong();
675648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
676648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
677648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
678648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(w).setY(h).setZ(d);
679648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
680648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
681648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyFrom(inArray);
682648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copyTo(outArray);
683648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
684648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
685648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
686648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
687648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
688648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]);
689648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
690648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
691648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
692648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
693648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "Long3D TEST PASSED");
694648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
695648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
696648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
697648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
698648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
699648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
700648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeTo_Byte3(RenderScript mRS) {
701648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
702648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
703648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
704648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
705648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] inArray = new byte[arr_len];
706648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] outArray = new byte[arr_len];
707648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        random.nextBytes(inArray);
708648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
709648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
710648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
711648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
712648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
713648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
714648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
715648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
716648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeTo(offset, count, outArray);
717648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
718648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
719648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
720648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
721648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
722648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
723648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
724648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
725648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
726648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
727648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0) {
728648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
729648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
730648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
731648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
732648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
733648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
734648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Byte TEST PASSED");
735648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
736648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
737648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
738648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
739648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
740648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeTo_Short3(RenderScript mRS) {
741648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
742648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
743648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
744648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
745648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] inArray = new short[arr_len];
746648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] outArray = new short[arr_len];
747648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
748648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
749648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = (short)random.nextInt();
750648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
751648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
752648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
753648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
754648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
755648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
756648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
757648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
758648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
759648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeTo(offset, count, outArray);
760648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
761648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
762648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
763648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
764648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
765648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
766648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
767648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
768648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
769648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
770648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0) {
771648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
772648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
773648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
774648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
775648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
776648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
777648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Short TEST PASSED");
778648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
779648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
780648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
781648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
782648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
783648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeTo_Int3(RenderScript mRS) {
784648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
785648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
786648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
787648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
788648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] inArray = new int[arr_len];
789648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] outArray = new int[arr_len];
790648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
791648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
792648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextInt();
793648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
794648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
795648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
796648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
797648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
798648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
799648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
800648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
801648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
802648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeTo(offset, count, outArray);
803648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
804648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
805648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
806648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
807648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
808648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
809648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
810648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
811648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
812648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
813648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0) {
814648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
815648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
816648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
817648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
818648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
819648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
820648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Int TEST PASSED");
821648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
822648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
823648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
824648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
825648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
826648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeTo_Float3(RenderScript mRS) {
827648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
828648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
829648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
830648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
831648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] inArray = new float[arr_len];
832648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] outArray = new float[arr_len];
833648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
834648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
835648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextFloat();
836648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
837648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
838648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
839648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
840648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
841648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
842648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
843648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
844648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
845648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeTo(offset, count, outArray);
846648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
847648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
848648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
849648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
850648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
851648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
852648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
853648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
854648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
855648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
856648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0f) {
857648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
858648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
859648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
860648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
861648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
862648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
863648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Float TEST PASSED");
864648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
865648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
866648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
867648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
868648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
869648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeTo_Long3(RenderScript mRS) {
870648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
871648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
872648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
873648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
874648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] inArray = new long[arr_len];
875648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] outArray = new long[arr_len];
876648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
877648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
878648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextLong();
879648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
880648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
881648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
882648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
883648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
884648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
885648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
886648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
887648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
888648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeTo(offset, count, outArray);
889648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
890648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
891648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
892648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
893648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
894648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
895648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
896648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
897648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
898648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
899648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0) {
900648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
901648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
902648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
903648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
904648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
905648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
906648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Long TEST PASSED");
907648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
908648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
909648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
910648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
911648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
912648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy2DRangeTo_Byte3(RenderScript mRS) {
913648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
914648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
915648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
916648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xoff = random.nextInt(width);
917648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int yoff = random.nextInt(height);
918648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xcount = width - xoff;
919648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int ycount = height - yoff;
920648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = xcount * ycount * 3;
921648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
922648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] inArray = new byte[arr_len];
923648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] outArray = new byte[arr_len];
924648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        random.nextBytes(inArray);
925648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
926648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
927648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
928648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
929648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
930648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
931648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
932648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
933648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
934648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
935648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
936648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
937648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
938648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
939648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
940648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
941648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
942648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Byte TEST PASSED");
943648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
944648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
945648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
946648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
947648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
948648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy2DRangeTo_Short3(RenderScript mRS) {
949648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
950648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
951648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
952648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xoff = random.nextInt(width);
953648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int yoff = random.nextInt(height);
954648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xcount = width - xoff;
955648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int ycount = height - yoff;
956648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = xcount * ycount * 3;
957648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
958648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] inArray = new short[arr_len];
959648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] outArray = new short[arr_len];
960648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
961648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
962648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = (short)random.nextInt();
963648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
964648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
965648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
966648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
967648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
968648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
969648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
970648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
971648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
972648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
973648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
974648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
975648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
976648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
977648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
978648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
979648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
980648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
981648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Short TEST PASSED");
982648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
983648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
984648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
985648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
986648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
987648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy2DRangeTo_Int3(RenderScript mRS) {
988648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
989648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
990648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
991648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xoff = random.nextInt(width);
992648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int yoff = random.nextInt(height);
993648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xcount = width - xoff;
994648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int ycount = height - yoff;
995648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = xcount * ycount * 3;
996648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
997648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] inArray = new int[arr_len];
998648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] outArray = new int[arr_len];
999648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1000648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1001648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextInt();
1002648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1003648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1004648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
1005648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
1006648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1007648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
1008648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
1009648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
1010648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1011648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
1012648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1013648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
1014648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1015648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1016648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1017648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1018648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1019648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
1020648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Int TEST PASSED");
1021648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
1022648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
1023648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1024648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
1025648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1026648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy2DRangeTo_Float3(RenderScript mRS) {
1027648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
1028648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
1029648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
1030648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xoff = random.nextInt(width);
1031648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int yoff = random.nextInt(height);
1032648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xcount = width - xoff;
1033648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int ycount = height - yoff;
1034648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = xcount * ycount * 3;
1035648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1036648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] inArray = new float[arr_len];
1037648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] outArray = new float[arr_len];
1038648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1039648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1040648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextFloat();
1041648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1042648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1043648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
1044648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
1045648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1046648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
1047648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
1048648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
1049648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1050648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
1051648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1052648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
1053648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1054648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1055648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1056648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1057648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1058648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
1059648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Float TEST PASSED");
1060648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
1061648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
1062648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1063648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
1064648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1065648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy2DRangeTo_Long3(RenderScript mRS) {
1066648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
1067648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(128);
1068648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int height = random.nextInt(128);
1069648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xoff = random.nextInt(width);
1070648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int yoff = random.nextInt(height);
1071648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int xcount = width - xoff;
1072648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int ycount = height - yoff;
1073648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = xcount * ycount * 3;
1074648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1075648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] inArray = new long[arr_len];
1076648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] outArray = new long[arr_len];
1077648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1078648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1079648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextLong();
1080648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1081648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1082648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
1083648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width).setY(height);
1084648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1085648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
1086648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
1087648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
1088648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1089648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
1090648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1091648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
1092648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1093648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1094648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1095648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1096648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1097648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
1098648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Long TEST PASSED");
1099648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
1100648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
1101648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1102648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
1103648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1104648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1105648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeToUnchecked_Byte3(RenderScript mRS) {
1106648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
1107648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
1108648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
1109648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1110648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] inArray = new byte[arr_len];
1111648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] outArray = new byte[arr_len];
1112648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        random.nextBytes(inArray);
1113648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1114648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS));
1115648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
1116648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1117648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
1118648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
1119648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
1120648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
1121648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeToUnchecked(offset, count, outArray);
1122648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1123648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
1124648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
1125648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
1126648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1127648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1128648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1129648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1130648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1131648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
1132648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0) {
1133648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1134648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1135648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1136648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1137648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1138648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
1139648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Byte TEST PASSED");
1140648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
1141648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
1142648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1143648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
1144648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1145648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeToUnchecked_Short3(RenderScript mRS) {
1146648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
1147648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
1148648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
1149648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1150648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] inArray = new short[arr_len];
1151648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] outArray = new short[arr_len];
1152648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1153648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1154648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = (short)random.nextInt();
1155648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1156648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1157648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS));
1158648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
1159648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1160648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
1161648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
1162648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
1163648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
1164648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeToUnchecked(offset, count, outArray);
1165648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1166648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
1167648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
1168648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
1169648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1170648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1171648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1172648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1173648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1174648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
1175648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0) {
1176648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1177648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1178648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1179648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1180648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1181648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
1182648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Short TEST PASSED");
1183648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
1184648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
1185648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1186648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
1187648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1188648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeToUnchecked_Int3(RenderScript mRS) {
1189648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
1190648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
1191648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
1192648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1193648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] inArray = new int[arr_len];
1194648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] outArray = new int[arr_len];
1195648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1196648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1197648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextInt();
1198648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1199648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1200648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS));
1201648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
1202648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1203648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
1204648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
1205648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
1206648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
1207648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeToUnchecked(offset, count, outArray);
1208648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1209648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
1210648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
1211648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
1212648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1213648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1214648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1215648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1216648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1217648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
1218648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0) {
1219648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1220648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1221648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1222648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1223648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1224648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
1225648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Int TEST PASSED");
1226648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
1227648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
1228648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1229648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
1230648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1231648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeToUnchecked_Float3(RenderScript mRS) {
1232648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
1233648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
1234648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
1235648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1236648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] inArray = new float[arr_len];
1237648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] outArray = new float[arr_len];
1238648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1239648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1240648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextFloat();
1241648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1242648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1243648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS));
1244648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
1245648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1246648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
1247648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
1248648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
1249648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
1250648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeToUnchecked(offset, count, outArray);
1251648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1252648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
1253648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
1254648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
1255648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1256648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1257648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1258648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1259648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1260648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
1261648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0f) {
1262648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1263648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1264648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1265648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1266648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1267648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
1268648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Float TEST PASSED");
1269648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
1270648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
1271648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1272648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
1273648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1274648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void testAllocation_copy1DRangeToUnchecked_Long3(RenderScript mRS) {
1275648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Random random = new Random(0x172d8ab9);
1276648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int width = random.nextInt(512);
1277648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int arr_len = width * 3;
1278648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1279648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] inArray = new long[arr_len];
1280648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] outArray = new long[arr_len];
1281648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1282648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < arr_len; i++) {
1283648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            inArray[i] = random.nextLong();
1284648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1285648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1286648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS));
1287648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        typeBuilder.setX(width);
1288648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1289648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.setAutoPadding(true);
1290648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int offset = random.nextInt(width);
1291648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int count = width - offset;
1292648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeFrom(offset, count, inArray);
1293648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        alloc.copy1DRangeToUnchecked(offset, count, outArray);
1294648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
1295648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        boolean result = true;
1296648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < count * 3; i++) {
1297648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (inArray[i] != outArray[i]) {
1298648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1299648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1300648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1301648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1302648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1303648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = count * 3; i < arr_len; i++) {
1304648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            if (outArray[i] != 0) {
1305648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                result = false;
1306648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1307648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                break;
1308648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            }
1309648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1310648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        if (result) {
1311648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Long TEST PASSED");
1312648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        } else {
1313648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            failTest();
1314648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        }
1315648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
1316648a1c137663ef7207684d0d7009dd5518942111Stephen Hines}
1317