161ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni/* 261ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * Copyright (C) 2015 The Android Open Source Project 361ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * 461ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * Licensed under the Apache License, Version 2.0 (the "License"); 561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * you may not use this file except in compliance with the License. 661ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * You may obtain a copy of the License at 761ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * 861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * http://www.apache.org/licenses/LICENSE-2.0 961ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * 1061ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * Unless required by applicable law or agreed to in writing, software 1161ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * distributed under the License is distributed on an "AS IS" BASIS, 1261ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1361ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * See the License for the specific language governing permissions and 1461ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni * limitations under the License. 1561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni */ 1661ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 1761ff1b75dbd28494004d1b6d989be34ae28a18acYang Nipackage com.android.rs.test_compat; 1861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 1961ff1b75dbd28494004d1b6d989be34ae28a18acYang Niimport android.content.Context; 2061ff1b75dbd28494004d1b6d989be34ae28a18acYang Niimport android.content.res.Resources; 2161ff1b75dbd28494004d1b6d989be34ae28a18acYang Niimport android.support.v8.renderscript.*; 2261ff1b75dbd28494004d1b6d989be34ae28a18acYang Niimport android.util.Log; 2361ff1b75dbd28494004d1b6d989be34ae28a18acYang Niimport java.lang.Thread; 2461ff1b75dbd28494004d1b6d989be34ae28a18acYang Niimport java.util.HashMap; 2561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 2661ff1b75dbd28494004d1b6d989be34ae28a18acYang Nipublic class UT_script_group2_nochain extends UnitTest { 2761ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni private Resources mRes; 2861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 2961ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni private static final int ARRAY_SIZE = 256; 3061ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 3161ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni private static final String TAG = "ScritGroup2 (nochain)"; 3261ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 3361ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni protected UT_script_group2_nochain(RSTestCore rstc, Resources res, Context ctx) { 3461ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni super(rstc, TAG, ctx); 3561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni mRes = res; 3661ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni } 3761ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 3861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni public void run() { 3961ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni RenderScript pRS = RenderScript.create(mCtx); 4061ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ScriptC_increment s_inc = new ScriptC_increment(pRS); 4161ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ScriptC_increment2 s_inc2 = new ScriptC_increment2(pRS); 4261ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ScriptC_double s_double = new ScriptC_double(pRS); 4361ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni pRS.setMessageHandler(mRsMessage); 4461ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 4561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni int[] array = new int[ARRAY_SIZE * 4]; 4661ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 4761ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni for (int i = 0; i < ARRAY_SIZE * 4; i++) { 4861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni array[i] = i; 4961ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni } 5061ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 5161ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni Allocation input = Allocation.createSized(pRS, Element.I32_4(pRS), ARRAY_SIZE); 5261ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni input.copyFrom(array); 5361ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 5461ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ScriptGroup.Builder2 builder = new ScriptGroup.Builder2(pRS); 5561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 5661ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ScriptGroup.Input unbound = builder.addInput(); 5761ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 5861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ScriptGroup.Closure c0 = 5961ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni builder.addKernel(s_inc.getKernelID_increment(), 6061ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE), 6161ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni unbound); 6261ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 6361ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 6461ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ScriptGroup.Closure c1 = 6561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni builder.addKernel(s_inc2.getKernelID_increment2(), 6661ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE), 6761ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni unbound, 6861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni //input, 6961ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni new ScriptGroup.Binding(s_inc2.getFieldID_a(), unbound)); 7061ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni //new ScriptGroup.Binding(s_inc2.getFieldID_a(), input)); 7161ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 7261ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ScriptGroup.Closure c2 = 7361ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni builder.addKernel(s_double.getKernelID_doubleKernel(), 7461ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE), 7561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni unbound); 7661ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 7761ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ScriptGroup group = builder.create("AddDouble2", c2.getReturn()); 7861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 7961ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni int[] a = new int[ARRAY_SIZE * 4]; 8061ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni ((Allocation)group.execute(input)[0]).copyTo(a); 8161ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 8261ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni pRS.finish(); 8361ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni pRS.destroy(); 8461ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni 8561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni boolean failed = false; 8661ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni for (int i = 0; i < ARRAY_SIZE * 4; i++) { 8761ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni if (a[i] != (i + 1) * 2) { 8861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni Log.e(TAG, "a["+i+"]="+a[i]+", should be "+ ((i + 1) * 2)); 8961ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni failed = true; 9061ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni } 9161ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni } 9261ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni if (failed) { 9361ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni failTest(); 9461ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni return; 9561ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni } 9661ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni passTest(); 9761ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni } 9861ff1b75dbd28494004d1b6d989be34ae28a18acYang Ni} 99