185d4955a13339054ffbd350874b1646125a6a130Jason Sams/* 285d4955a13339054ffbd350874b1646125a6a130Jason Sams * Copyright (C) 2012 The Android Open Source Project 385d4955a13339054ffbd350874b1646125a6a130Jason Sams * 485d4955a13339054ffbd350874b1646125a6a130Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 585d4955a13339054ffbd350874b1646125a6a130Jason Sams * you may not use this file except in compliance with the License. 685d4955a13339054ffbd350874b1646125a6a130Jason Sams * You may obtain a copy of the License at 785d4955a13339054ffbd350874b1646125a6a130Jason Sams * 885d4955a13339054ffbd350874b1646125a6a130Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 985d4955a13339054ffbd350874b1646125a6a130Jason Sams * 1085d4955a13339054ffbd350874b1646125a6a130Jason Sams * Unless required by applicable law or agreed to in writing, software 1185d4955a13339054ffbd350874b1646125a6a130Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1285d4955a13339054ffbd350874b1646125a6a130Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1385d4955a13339054ffbd350874b1646125a6a130Jason Sams * See the License for the specific language governing permissions and 1485d4955a13339054ffbd350874b1646125a6a130Jason Sams * limitations under the License. 1585d4955a13339054ffbd350874b1646125a6a130Jason Sams */ 1685d4955a13339054ffbd350874b1646125a6a130Jason Sams 1785d4955a13339054ffbd350874b1646125a6a130Jason Samspackage com.android.rs.test; 1885d4955a13339054ffbd350874b1646125a6a130Jason Sams 1985d4955a13339054ffbd350874b1646125a6a130Jason Samsimport android.content.Context; 2085d4955a13339054ffbd350874b1646125a6a130Jason Samsimport android.content.res.Resources; 2185d4955a13339054ffbd350874b1646125a6a130Jason Samsimport android.renderscript.*; 2285d4955a13339054ffbd350874b1646125a6a130Jason Samsimport android.util.Log; 2385d4955a13339054ffbd350874b1646125a6a130Jason Sams 2485d4955a13339054ffbd350874b1646125a6a130Jason Samspublic class UT_copy_test extends UnitTest { 2585d4955a13339054ffbd350874b1646125a6a130Jason Sams private Resources mRes; 2685d4955a13339054ffbd350874b1646125a6a130Jason Sams boolean pass = true; 2785d4955a13339054ffbd350874b1646125a6a130Jason Sams 2885d4955a13339054ffbd350874b1646125a6a130Jason Sams protected UT_copy_test(RSTestCore rstc, Resources res, Context ctx) { 2985d4955a13339054ffbd350874b1646125a6a130Jason Sams super(rstc, "Copy", ctx); 3085d4955a13339054ffbd350874b1646125a6a130Jason Sams mRes = res; 3185d4955a13339054ffbd350874b1646125a6a130Jason Sams } 3285d4955a13339054ffbd350874b1646125a6a130Jason Sams 3385d4955a13339054ffbd350874b1646125a6a130Jason Sams void testFloat2(RenderScript rs, ScriptC_copy_test s) { 3485d4955a13339054ffbd350874b1646125a6a130Jason Sams Allocation a1 = Allocation.createSized(rs, Element.F32_2(rs), 1024); 3585d4955a13339054ffbd350874b1646125a6a130Jason Sams Allocation a2 = Allocation.createSized(rs, Element.F32_2(rs), 1024); 3685d4955a13339054ffbd350874b1646125a6a130Jason Sams 3785d4955a13339054ffbd350874b1646125a6a130Jason Sams float[] f1 = new float[1024 * 2]; 3885d4955a13339054ffbd350874b1646125a6a130Jason Sams float[] f2 = new float[1024 * 2]; 3985d4955a13339054ffbd350874b1646125a6a130Jason Sams for (int ct=0; ct < f1.length; ct++) { 4085d4955a13339054ffbd350874b1646125a6a130Jason Sams f1[ct] = (float)ct; 4185d4955a13339054ffbd350874b1646125a6a130Jason Sams } 4285d4955a13339054ffbd350874b1646125a6a130Jason Sams a1.copyFrom(f1); 4385d4955a13339054ffbd350874b1646125a6a130Jason Sams 4485d4955a13339054ffbd350874b1646125a6a130Jason Sams s.forEach_copyFloat2(a1, a2); 4585d4955a13339054ffbd350874b1646125a6a130Jason Sams 4685d4955a13339054ffbd350874b1646125a6a130Jason Sams a2.copyTo(f2); 4785d4955a13339054ffbd350874b1646125a6a130Jason Sams for (int ct=0; ct < f1.length; ct++) { 4885d4955a13339054ffbd350874b1646125a6a130Jason Sams if (f1[ct] != f2[ct]) { 4985d4955a13339054ffbd350874b1646125a6a130Jason Sams failTest(); 5085d4955a13339054ffbd350874b1646125a6a130Jason Sams Log.v("RS Test", "Compare failed at " + ct + ", " + f1[ct] + ", " + f2[ct]); 5185d4955a13339054ffbd350874b1646125a6a130Jason Sams } 5285d4955a13339054ffbd350874b1646125a6a130Jason Sams } 5385d4955a13339054ffbd350874b1646125a6a130Jason Sams a1.destroy(); 5485d4955a13339054ffbd350874b1646125a6a130Jason Sams a2.destroy(); 5585d4955a13339054ffbd350874b1646125a6a130Jason Sams } 5685d4955a13339054ffbd350874b1646125a6a130Jason Sams 5785d4955a13339054ffbd350874b1646125a6a130Jason Sams void testFloat3(RenderScript rs, ScriptC_copy_test s) { 5885d4955a13339054ffbd350874b1646125a6a130Jason Sams Allocation a1 = Allocation.createSized(rs, Element.F32_3(rs), 1024); 5985d4955a13339054ffbd350874b1646125a6a130Jason Sams Allocation a2 = Allocation.createSized(rs, Element.F32_3(rs), 1024); 6085d4955a13339054ffbd350874b1646125a6a130Jason Sams 6185d4955a13339054ffbd350874b1646125a6a130Jason Sams float[] f1 = new float[1024 * 4]; 6285d4955a13339054ffbd350874b1646125a6a130Jason Sams float[] f2 = new float[1024 * 4]; 6385d4955a13339054ffbd350874b1646125a6a130Jason Sams for (int ct=0; ct < f1.length; ct++) { 6485d4955a13339054ffbd350874b1646125a6a130Jason Sams f1[ct] = (float)ct; 6585d4955a13339054ffbd350874b1646125a6a130Jason Sams } 6685d4955a13339054ffbd350874b1646125a6a130Jason Sams a1.copyFrom(f1); 6785d4955a13339054ffbd350874b1646125a6a130Jason Sams 6885d4955a13339054ffbd350874b1646125a6a130Jason Sams s.forEach_copyFloat3(a1, a2); 6985d4955a13339054ffbd350874b1646125a6a130Jason Sams 7085d4955a13339054ffbd350874b1646125a6a130Jason Sams a2.copyTo(f2); 7185d4955a13339054ffbd350874b1646125a6a130Jason Sams for (int ct=0; ct < f1.length; ct++) { 7285d4955a13339054ffbd350874b1646125a6a130Jason Sams if ((f1[ct] != f2[ct]) && ((ct&3) != 3)) { 7385d4955a13339054ffbd350874b1646125a6a130Jason Sams failTest(); 7485d4955a13339054ffbd350874b1646125a6a130Jason Sams Log.v("RS Test", "Compare failed at " + ct + ", " + f1[ct] + ", " + f2[ct]); 7585d4955a13339054ffbd350874b1646125a6a130Jason Sams } 7685d4955a13339054ffbd350874b1646125a6a130Jason Sams } 7785d4955a13339054ffbd350874b1646125a6a130Jason Sams a1.destroy(); 7885d4955a13339054ffbd350874b1646125a6a130Jason Sams a2.destroy(); 7985d4955a13339054ffbd350874b1646125a6a130Jason Sams } 8085d4955a13339054ffbd350874b1646125a6a130Jason Sams 8185d4955a13339054ffbd350874b1646125a6a130Jason Sams void testFloat4(RenderScript rs, ScriptC_copy_test s) { 8285d4955a13339054ffbd350874b1646125a6a130Jason Sams Allocation a1 = Allocation.createSized(rs, Element.F32_4(rs), 1024); 8385d4955a13339054ffbd350874b1646125a6a130Jason Sams Allocation a2 = Allocation.createSized(rs, Element.F32_4(rs), 1024); 8485d4955a13339054ffbd350874b1646125a6a130Jason Sams 8585d4955a13339054ffbd350874b1646125a6a130Jason Sams float[] f1 = new float[1024 * 4]; 8685d4955a13339054ffbd350874b1646125a6a130Jason Sams float[] f2 = new float[1024 * 4]; 8785d4955a13339054ffbd350874b1646125a6a130Jason Sams for (int ct=0; ct < f1.length; ct++) { 8885d4955a13339054ffbd350874b1646125a6a130Jason Sams f1[ct] = (float)ct; 8985d4955a13339054ffbd350874b1646125a6a130Jason Sams } 9085d4955a13339054ffbd350874b1646125a6a130Jason Sams a1.copyFrom(f1); 9185d4955a13339054ffbd350874b1646125a6a130Jason Sams 9285d4955a13339054ffbd350874b1646125a6a130Jason Sams s.forEach_copyFloat4(a1, a2); 9385d4955a13339054ffbd350874b1646125a6a130Jason Sams 9485d4955a13339054ffbd350874b1646125a6a130Jason Sams a2.copyTo(f2); 9585d4955a13339054ffbd350874b1646125a6a130Jason Sams for (int ct=0; ct < f1.length; ct++) { 9685d4955a13339054ffbd350874b1646125a6a130Jason Sams if (f1[ct] != f2[ct]) { 9785d4955a13339054ffbd350874b1646125a6a130Jason Sams failTest(); 9885d4955a13339054ffbd350874b1646125a6a130Jason Sams Log.v("RS Test", "Compare failed at " + ct + ", " + f1[ct] + ", " + f2[ct]); 9985d4955a13339054ffbd350874b1646125a6a130Jason Sams } 10085d4955a13339054ffbd350874b1646125a6a130Jason Sams } 10185d4955a13339054ffbd350874b1646125a6a130Jason Sams a1.destroy(); 10285d4955a13339054ffbd350874b1646125a6a130Jason Sams a2.destroy(); 10385d4955a13339054ffbd350874b1646125a6a130Jason Sams } 10485d4955a13339054ffbd350874b1646125a6a130Jason Sams 10585d4955a13339054ffbd350874b1646125a6a130Jason Sams public void run() { 10685d4955a13339054ffbd350874b1646125a6a130Jason Sams RenderScript pRS = RenderScript.create(mCtx); 10785d4955a13339054ffbd350874b1646125a6a130Jason Sams ScriptC_copy_test s = new ScriptC_copy_test(pRS); 10885d4955a13339054ffbd350874b1646125a6a130Jason Sams pRS.setMessageHandler(mRsMessage); 10985d4955a13339054ffbd350874b1646125a6a130Jason Sams 11085d4955a13339054ffbd350874b1646125a6a130Jason Sams testFloat2(pRS, s); 11185d4955a13339054ffbd350874b1646125a6a130Jason Sams testFloat3(pRS, s); 11285d4955a13339054ffbd350874b1646125a6a130Jason Sams testFloat4(pRS, s); 11385d4955a13339054ffbd350874b1646125a6a130Jason Sams s.invoke_sendResult(true); 11485d4955a13339054ffbd350874b1646125a6a130Jason Sams 11585d4955a13339054ffbd350874b1646125a6a130Jason Sams pRS.finish(); 11685d4955a13339054ffbd350874b1646125a6a130Jason Sams waitForMessage(); 11785d4955a13339054ffbd350874b1646125a6a130Jason Sams pRS.destroy(); 11885d4955a13339054ffbd350874b1646125a6a130Jason Sams } 11985d4955a13339054ffbd350874b1646125a6a130Jason Sams} 12085d4955a13339054ffbd350874b1646125a6a130Jason Sams 121