17d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang/* 27d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * Copyright (C) 2015 The Android Open Source Project 37d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * 47d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * Licensed under the Apache License, Version 2.0 (the "License"); 57d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * you may not use this file except in compliance with the License. 67d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * You may obtain a copy of the License at 77d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * 87d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * http://www.apache.org/licenses/LICENSE-2.0 97d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * 107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * Unless required by applicable law or agreed to in writing, software 117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * distributed under the License is distributed on an "AS IS" BASIS, 127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * See the License for the specific language governing permissions and 147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang * limitations under the License. 157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang */ 167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangpackage com.android.rs.test_compat; 187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangimport android.content.Context; 207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangimport android.content.res.Resources; 217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangimport android.support.v8.renderscript.*; 227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangimport java.util.Random; 237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wangpublic class UT_alloc_copyPadded extends UnitTest { 257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang private Resources mRes; 267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang protected UT_alloc_copyPadded(RSTestCore rstc, Resources res, Context ctx) { 287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang super(rstc, "Allocation CopyTo Padded", ctx); 297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang mRes = res; 307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void run() { 337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang RenderScript mRS = RenderScript.create(mCtx); 347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Byte3_1D(mRS); 367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Byte3_2D(mRS); 377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Byte3_3D(mRS); 387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Short3_1D(mRS); 407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Short3_2D(mRS); 417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Short3_3D(mRS); 427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Int3_1D(mRS); 447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Int3_2D(mRS); 457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Int3_3D(mRS); 467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Float3_1D(mRS); 487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Float3_2D(mRS); 497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Float3_3D(mRS); 507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Double3_1D(mRS); 527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Double3_2D(mRS); 537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Double3_3D(mRS); 547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Long3_1D(mRS); 567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Long3_2D(mRS); 577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_Long3_3D(mRS); 587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeTo_Byte3(mRS); 617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeTo_Short3(mRS); 627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeTo_Int3(mRS); 637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeTo_Float3(mRS); 647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeTo_Long3(mRS); 657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy2DRangeTo_Byte3(mRS); 677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy2DRangeTo_Short3(mRS); 687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy2DRangeTo_Int3(mRS); 697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy2DRangeTo_Float3(mRS); 707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy2DRangeTo_Long3(mRS); 717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeToUnchecked_Byte3(mRS); 737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeToUnchecked_Short3(mRS); 747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeToUnchecked_Int3(mRS); 757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeToUnchecked_Float3(mRS); 767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang testAllocation_copy1DRangeToUnchecked_Long3(mRS); 777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang mRS.destroy(); 797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang passTest(); 807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Byte3_1D(RenderScript mRS) { 837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] inArray = new byte[arr_len]; 887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] outArray = new byte[arr_len]; 897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang random.nextBytes(inArray); 907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS)); 927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 1007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 1017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 1027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 1037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 1047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 1077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Byte1D TEST PASSED"); 1087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 1097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 1107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Byte3_2D(RenderScript mRS) { 1147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 1157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 1167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 1177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * height * 3; 1187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] inArray = new byte[arr_len]; 1207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] outArray = new byte[arr_len]; 1217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang random.nextBytes(inArray); 1227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS)); 1247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 1257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 1267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 1277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 1287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 1297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 1317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 1327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 1337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 1347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 1357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 1367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 1397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Byte2D TEST PASSED"); 1407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 1417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 1427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Byte3_3D(RenderScript mRS) { 1467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 1477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int w = random.nextInt(32); 1487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int h = random.nextInt(32); 1497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int d = random.nextInt(32); 1507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = w * d * h * 3; 1517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] inArray = new byte[arr_len]; 1537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] outArray = new byte[arr_len]; 1547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang random.nextBytes(inArray); 1557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS)); 1577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(w).setY(h).setZ(d); 1587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 1597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 1607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 1617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 1627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 1647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 1657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 1667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 1677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 1687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 1697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 1727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Byte3D TEST PASSED"); 1737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 1747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 1757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Short3_1D(RenderScript mRS) { 1797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 1807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 1817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 1827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] inArray = new short[arr_len]; 1847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] outArray = new short[arr_len]; 1857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 1877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = (short)random.nextInt(); 1887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 1897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS)); 1917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 1927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 1937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 1947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 1957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 1967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 1977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 1987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 1997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 2007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 2017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 2027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 2037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 2067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Short1D TEST PASSED"); 2077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 2087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 2097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Short3_2D(RenderScript mRS) { 2137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 2147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 2157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 2167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * height * 3; 2177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] inArray = new short[arr_len]; 2197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] outArray = new short[arr_len]; 2207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 2227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = (short)random.nextInt(); 2237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS)); 2267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 2277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 2287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 2297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 2307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 2317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 2337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 2347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 2357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 2367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 2377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 2387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 2417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Short2D TEST PASSED"); 2427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 2437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 2447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Short3_3D(RenderScript mRS) { 2487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 2497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int w = random.nextInt(32); 2507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int h = random.nextInt(32); 2517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int d = random.nextInt(32); 2527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = w * d * h * 3; 2537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] inArray = new short[arr_len]; 2557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] outArray = new short[arr_len]; 2567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 2587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = (short)random.nextInt(); 2597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS)); 2627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(w).setY(h).setZ(d); 2637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 2647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 2657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 2667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 2677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 2697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 2707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 2717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 2727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 2737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 2747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 2777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Short3D TEST PASSED"); 2787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 2797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 2807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Int3_1D(RenderScript mRS) { 2847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 2857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 2867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 2877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] inArray = new int[arr_len]; 2897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] outArray = new int[arr_len]; 2907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 2927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextInt(); 2937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 2947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 2957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS)); 2967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 2977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 2987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 2997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 3007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 3017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 3037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 3047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 3057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 3067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 3077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 3087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 3117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Int1D TEST PASSED"); 3127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 3137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 3147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Int3_2D(RenderScript mRS) { 3187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 3197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 3207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 3217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * height * 3; 3227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] inArray = new int[arr_len]; 3247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] outArray = new int[arr_len]; 3257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 3277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextInt(); 3287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS)); 3317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 3327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 3337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 3347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 3357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 3367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 3387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 3397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 3407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 3417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 3427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 3437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 3467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Int2D TEST PASSED"); 3477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 3487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 3497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Int3_3D(RenderScript mRS) { 3537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 3547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int w = random.nextInt(32); 3557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int h = random.nextInt(32); 3567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int d = random.nextInt(32); 3577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = w * d * h * 3; 3587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] inArray = new int[arr_len]; 3607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] outArray = new int[arr_len]; 3617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 3637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextInt(); 3647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS)); 3677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(w).setY(h).setZ(d); 3687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 3697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 3707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 3717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 3727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 3747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 3757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 3767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 3777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 3787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 3797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 3827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Int3D TEST PASSED"); 3837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 3847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 3857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Float3_1D(RenderScript mRS) { 3897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 3907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 3917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 3927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] inArray = new float[arr_len]; 3947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] outArray = new float[arr_len]; 3957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 3967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 3977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextFloat(); 3987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 3997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS)); 4017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 4027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 4037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 4047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 4057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 4067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 4087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 4097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 4107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 4117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 4127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 4137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 4167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Float1D TEST PASSED"); 4177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 4187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 4197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Float3_2D(RenderScript mRS) { 4227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 4237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 4247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 4257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * height * 3; 4267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] inArray = new float[arr_len]; 4287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] outArray = new float[arr_len]; 4297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 4317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextFloat(); 4327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS)); 4357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 4367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 4377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 4387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 4397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 4407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 4427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 4437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 4447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 4457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 4467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 4477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 4507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Float2D TEST PASSED"); 4517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 4527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 4537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Float3_3D(RenderScript mRS) { 4567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 4577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int w = random.nextInt(32); 4587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int h = random.nextInt(32); 4597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int d = random.nextInt(32); 4607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = w * d * h * 3; 4617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] inArray = new float[arr_len]; 4637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] outArray = new float[arr_len]; 4647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 4667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextFloat(); 4677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS)); 4707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(w).setY(h).setZ(d); 4717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 4727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 4737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 4747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 4757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 4777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 4787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 4797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 4807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 4817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 4827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 4857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Float3D TEST PASSED"); 4867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 4877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 4887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 4907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Double3_1D(RenderScript mRS) { 4927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 4937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 4947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 4957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang double[] inArray = new double[arr_len]; 4977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang double[] outArray = new double[arr_len]; 4987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 4997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 5007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = (double)random.nextFloat(); 5017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.F64_3(mRS)); 5047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 5057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 5067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 5077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 5087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 5097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 5117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 5127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 5137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 5147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 5157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 5167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 5197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Double1D TEST PASSED"); 5207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 5217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 5227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Double3_2D(RenderScript mRS) { 5257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 5267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 5277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 5287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * height * 3; 5297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang double[] inArray = new double[arr_len]; 5317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang double[] outArray = new double[arr_len]; 5327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 5347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = (double)random.nextFloat(); 5357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.F64_3(mRS)); 5387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 5397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 5407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 5417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 5427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 5437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 5457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 5467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 5477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 5487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 5497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 5507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 5537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Double2D TEST PASSED"); 5547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 5557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 5567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Double3_3D(RenderScript mRS) { 5597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 5607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int w = random.nextInt(32); 5617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int h = random.nextInt(32); 5627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int d = random.nextInt(32); 5637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = w * d * h * 3; 5647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang double[] inArray = new double[arr_len]; 5667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang double[] outArray = new double[arr_len]; 5677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 5697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = (double)random.nextFloat(); 5707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.F64_3(mRS)); 5737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(w).setY(h).setZ(d); 5747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 5757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 5767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 5777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 5787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 5807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 5817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 5827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 5837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 5847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 5857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 5887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Double3D TEST PASSED"); 5897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 5907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 5917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 5937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Long3_1D(RenderScript mRS) { 5957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 5967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 5977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 5987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 5997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] inArray = new long[arr_len]; 6007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] outArray = new long[arr_len]; 6017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 6037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextLong(); 6047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS)); 6077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 6087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 6097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 6107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 6117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 6127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 6147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 6157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 6167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 6177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 6187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 6197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 6227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Long1D TEST PASSED"); 6237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 6247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 6257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Long3_2D(RenderScript mRS) { 6297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 6307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 6317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 6327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * height * 3; 6337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] inArray = new long[arr_len]; 6357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] outArray = new long[arr_len]; 6367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 6387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextLong(); 6397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS)); 6427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 6437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 6447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 6457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 6467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 6477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 6497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 6507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 6517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 6527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 6537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 6547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 6577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Long2D TEST PASSED"); 6587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 6597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 6607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_Long3_3D(RenderScript mRS) { 6647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 6657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int w = random.nextInt(32); 6667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int h = random.nextInt(32); 6677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int d = random.nextInt(32); 6687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = w * d * h * 3; 6697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] inArray = new long[arr_len]; 6717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] outArray = new long[arr_len]; 6727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 6747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextLong(); 6757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS)); 6787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(w).setY(h).setZ(d); 6797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 6807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 6817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyFrom(inArray); 6827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copyTo(outArray); 6837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 6857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 6867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 6877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 6887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "" + i + " " + inArray[i] + " " + outArray[i]); 6897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 6907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 6937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Long3D TEST PASSED"); 6947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 6957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 6967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 6987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 6997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeTo_Byte3(RenderScript mRS) { 7017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 7027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 7037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 7047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] inArray = new byte[arr_len]; 7067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] outArray = new byte[arr_len]; 7077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang random.nextBytes(inArray); 7087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS)); 7107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 7117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 7127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 7137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 7147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 7157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 7167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeTo(offset, count, outArray); 7177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 7197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 7207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 7217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 7227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 7237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 7247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 7277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0) { 7287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 7297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 7307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 7317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 7347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Byte TEST PASSED"); 7357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 7367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 7377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeTo_Short3(RenderScript mRS) { 7417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 7427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 7437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 7447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] inArray = new short[arr_len]; 7467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] outArray = new short[arr_len]; 7477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 7497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = (short)random.nextInt(); 7507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS)); 7537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 7547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 7557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 7567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 7577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 7587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 7597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeTo(offset, count, outArray); 7607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 7627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 7637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 7647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 7657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 7667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 7677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 7707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0) { 7717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 7727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 7737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 7747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 7777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Short TEST PASSED"); 7787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 7797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 7807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeTo_Int3(RenderScript mRS) { 7847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 7857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 7867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 7877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] inArray = new int[arr_len]; 7897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] outArray = new int[arr_len]; 7907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 7927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextInt(); 7937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 7947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 7957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS)); 7967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 7977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 7987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 7997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 8007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 8017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 8027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeTo(offset, count, outArray); 8037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 8057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 8067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 8077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 8087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 8097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 8107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 8137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0) { 8147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 8157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 8167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 8177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 8207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Int TEST PASSED"); 8217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 8227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 8237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeTo_Float3(RenderScript mRS) { 8277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 8287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 8297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 8307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] inArray = new float[arr_len]; 8327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] outArray = new float[arr_len]; 8337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 8357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextFloat(); 8367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS)); 8397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 8407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 8417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 8427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 8437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 8447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 8457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeTo(offset, count, outArray); 8467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 8487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 8497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 8507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 8517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 8527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 8537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 8567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0f) { 8577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 8587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 8597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 8607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 8637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Float TEST PASSED"); 8647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 8657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 8667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeTo_Long3(RenderScript mRS) { 8707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 8717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 8727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 8737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] inArray = new long[arr_len]; 8757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] outArray = new long[arr_len]; 8767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 8787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextLong(); 8797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS)); 8827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 8837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 8847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 8857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 8867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 8877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 8887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeTo(offset, count, outArray); 8897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 8907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 8917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 8927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 8937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 8947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 8957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 8967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 8987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 8997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0) { 9007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 9017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 9027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 9037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 9067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeTo_Long TEST PASSED"); 9077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 9087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 9097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy2DRangeTo_Byte3(RenderScript mRS) { 9137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 9147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 9157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 9167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xoff = random.nextInt(width); 9177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int yoff = random.nextInt(height); 9187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xcount = width - xoff; 9197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int ycount = height - yoff; 9207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = xcount * ycount * 3; 9217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] inArray = new byte[arr_len]; 9237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] outArray = new byte[arr_len]; 9247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang random.nextBytes(inArray); 9257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS)); 9277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 9287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 9297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 9307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray); 9317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray); 9327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 9347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 9357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 9367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 9377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 9387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 9397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 9427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Byte TEST PASSED"); 9437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 9447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 9457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy2DRangeTo_Short3(RenderScript mRS) { 9497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 9507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 9517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 9527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xoff = random.nextInt(width); 9537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int yoff = random.nextInt(height); 9547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xcount = width - xoff; 9557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int ycount = height - yoff; 9567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = xcount * ycount * 3; 9577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] inArray = new short[arr_len]; 9597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] outArray = new short[arr_len]; 9607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 9627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = (short)random.nextInt(); 9637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS)); 9667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 9677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 9687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 9697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray); 9707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray); 9717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 9737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 9747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 9757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 9767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 9777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 9787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 9817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Short TEST PASSED"); 9827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 9837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 9847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 9867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy2DRangeTo_Int3(RenderScript mRS) { 9887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 9897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 9907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 9917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xoff = random.nextInt(width); 9927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int yoff = random.nextInt(height); 9937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xcount = width - xoff; 9947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int ycount = height - yoff; 9957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = xcount * ycount * 3; 9967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 9977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] inArray = new int[arr_len]; 9987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] outArray = new int[arr_len]; 9997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 10017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextInt(); 10027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS)); 10057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 10067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 10077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 10087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray); 10097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray); 10107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 10127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 10137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 10147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 10157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 10167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 10177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 10207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Int TEST PASSED"); 10217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 10227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 10237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy2DRangeTo_Float3(RenderScript mRS) { 10277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 10287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 10297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 10307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xoff = random.nextInt(width); 10317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int yoff = random.nextInt(height); 10327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xcount = width - xoff; 10337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int ycount = height - yoff; 10347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = xcount * ycount * 3; 10357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] inArray = new float[arr_len]; 10377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] outArray = new float[arr_len]; 10387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 10407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextFloat(); 10417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS)); 10447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 10457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 10467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 10477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray); 10487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray); 10497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 10517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 10527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 10537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 10547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 10557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 10567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 10597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Float TEST PASSED"); 10607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 10617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 10627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy2DRangeTo_Long3(RenderScript mRS) { 10667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 10677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(128); 10687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int height = random.nextInt(128); 10697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xoff = random.nextInt(width); 10707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int yoff = random.nextInt(height); 10717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int xcount = width - xoff; 10727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int ycount = height - yoff; 10737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = xcount * ycount * 3; 10747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] inArray = new long[arr_len]; 10767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] outArray = new long[arr_len]; 10777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 10797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextLong(); 10807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS)); 10837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width).setY(height); 10847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 10857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 10867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray); 10877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray); 10887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 10897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 10907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 10917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 10927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 10937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 10947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 10957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 10977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 10987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy2DRangeTo_Long TEST PASSED"); 10997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 11007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 11017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeToUnchecked_Byte3(RenderScript mRS) { 11067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 11077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 11087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 11097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] inArray = new byte[arr_len]; 11117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang byte[] outArray = new byte[arr_len]; 11127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang random.nextBytes(inArray); 11137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8_3(mRS)); 11157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 11167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 11177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 11187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 11197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 11207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 11217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeToUnchecked(offset, count, outArray); 11227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 11247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 11257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 11267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 11277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 11287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 11297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 11327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0) { 11337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 11347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 11357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 11367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 11397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Byte TEST PASSED"); 11407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 11417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 11427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeToUnchecked_Short3(RenderScript mRS) { 11467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 11477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 11487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 11497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] inArray = new short[arr_len]; 11517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang short[] outArray = new short[arr_len]; 11527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 11547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = (short)random.nextInt(); 11557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16_3(mRS)); 11587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 11597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 11607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 11617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 11627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 11637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 11647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeToUnchecked(offset, count, outArray); 11657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 11677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 11687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 11697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 11707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 11717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 11727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 11757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0) { 11767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 11777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 11787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 11797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 11827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Short TEST PASSED"); 11837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 11847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 11857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeToUnchecked_Int3(RenderScript mRS) { 11897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 11907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 11917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 11927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] inArray = new int[arr_len]; 11947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int[] outArray = new int[arr_len]; 11957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 11967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 11977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextInt(); 11987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 11997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32_3(mRS)); 12017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 12027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 12037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 12047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 12057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 12067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 12077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeToUnchecked(offset, count, outArray); 12087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 12107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 12117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 12127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 12137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 12147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 12157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12177d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 12187d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0) { 12197d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 12207d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 12217d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 12227d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12237d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12247d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 12257d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Int TEST PASSED"); 12267d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 12277d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 12287d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12297d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12307d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12317d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeToUnchecked_Float3(RenderScript mRS) { 12327d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 12337d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 12347d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 12357d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12367d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] inArray = new float[arr_len]; 12377d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang float[] outArray = new float[arr_len]; 12387d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12397d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 12407d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextFloat(); 12417d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12427d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12437d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32_3(mRS)); 12447d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 12457d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 12467d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 12477d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 12487d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 12497d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 12507d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeToUnchecked(offset, count, outArray); 12517d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12527d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 12537d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 12547d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 12557d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 12567d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 12577d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 12587d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12597d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12607d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 12617d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0f) { 12627d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 12637d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 12647d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 12657d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12667d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12677d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 12687d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Float TEST PASSED"); 12697d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 12707d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 12717d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12727d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12737d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12747d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang public void testAllocation_copy1DRangeToUnchecked_Long3(RenderScript mRS) { 12757d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Random random = new Random(0x172d8ab9); 12767d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int width = random.nextInt(512); 12777d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int arr_len = width * 3; 12787d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12797d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] inArray = new long[arr_len]; 12807d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang long[] outArray = new long[arr_len]; 12817d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12827d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < arr_len; i++) { 12837d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang inArray[i] = random.nextLong(); 12847d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 12857d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12867d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64_3(mRS)); 12877d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang typeBuilder.setX(width); 12887d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create()); 12897d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.setAutoPadding(true); 12907d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int offset = random.nextInt(width); 12917d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang int count = width - offset; 12927d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeFrom(offset, count, inArray); 12937d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang alloc.copy1DRangeToUnchecked(offset, count, outArray); 12947d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang 12957d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang boolean result = true; 12967d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = 0; i < count * 3; i++) { 12977d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (inArray[i] != outArray[i]) { 12987d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 12997d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 13007d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 13017d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 13027d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 13037d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang for (int i = count * 3; i < arr_len; i++) { 13047d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (outArray[i] != 0) { 13057d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang result = false; 13067d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]); 13077d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang break; 13087d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 13097d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 13107d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang if (result) { 13117d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang android.util.Log.v("Alloc Padding Test", "copy1DRangeToUnchecked_Long TEST PASSED"); 13127d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } else { 13137d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang failTest(); 13147d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 13157d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang } 13167d1bbca7d1b6cef9515a3ad672c7ae71ff5ba69bMiao Wang} 1317