| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except |
| * in compliance with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software distributed under the License |
| * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
| * or implied. See the License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| |
| package com.android.rs.test; |
| |
| import android.content.Context; |
| import android.content.res.Resources; |
| import android.renderscript.*; |
| import android.util.Log; |
| import java.lang.Thread; |
| import java.util.HashMap; |
| |
| public class UT_script_group2_nochain extends UnitTest { |
| private Resources mRes; |
| |
| private static final int ARRAY_SIZE = 256; |
| |
| private static final String TAG = "ScritGroup2 (nochain)"; |
| |
| protected UT_script_group2_nochain(RSTestCore rstc, Resources res, Context ctx) { |
| super(rstc, TAG, ctx); |
| mRes = res; |
| } |
| |
| public void run() { |
| RenderScript pRS = RenderScript.create(mCtx); |
| ScriptC_increment s_inc = new ScriptC_increment(pRS); |
| ScriptC_increment2 s_inc2 = new ScriptC_increment2(pRS); |
| ScriptC_double s_double = new ScriptC_double(pRS); |
| pRS.setMessageHandler(mRsMessage); |
| |
| int[] array = new int[ARRAY_SIZE * 4]; |
| |
| for (int i = 0; i < ARRAY_SIZE * 4; i++) { |
| array[i] = i; |
| } |
| |
| Allocation input = Allocation.createSized(pRS, Element.I32_4(pRS), ARRAY_SIZE); |
| input.copyFrom(array); |
| |
| ScriptGroup.Builder2 builder = new ScriptGroup.Builder2(pRS); |
| |
| ScriptGroup.Input unbound = builder.addInput(); |
| |
| ScriptGroup.Closure c0 = |
| builder.addKernel(s_inc.getKernelID_increment(), |
| Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE), |
| unbound); |
| |
| ScriptGroup.Closure c1 = |
| builder.addKernel(s_inc2.getKernelID_increment2(), |
| Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE), |
| unbound, |
| new ScriptGroup.Binding(s_inc2.getFieldID_a(), unbound)); |
| |
| ScriptGroup.Closure c2 = |
| builder.addKernel(s_double.getKernelID_doubleKernel(), |
| Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE), |
| unbound); |
| |
| ScriptGroup group = builder.create("AddDouble2", c2.getReturn()); |
| |
| int[] a = new int[ARRAY_SIZE * 4]; |
| ((Allocation)group.execute(input)[0]).copyTo(a); |
| |
| pRS.finish(); |
| pRS.destroy(); |
| |
| boolean failed = false; |
| for (int i = 0; i < ARRAY_SIZE * 4; i++) { |
| if (a[i] != (i + 1) * 2) { |
| Log.e(TAG, "a["+i+"]="+a[i]+", should be "+ ((i + 1) * 2)); |
| failed = true; |
| } |
| } |
| if (failed) { |
| failTest(); |
| return; |
| } |
| passTest(); |
| } |
| } |