1263459d028a714d731b4b729547f5989498b137dStephen Hines/* 2263459d028a714d731b4b729547f5989498b137dStephen Hines * Copyright (C) 2012 The Android Open Source Project 3263459d028a714d731b4b729547f5989498b137dStephen Hines * 4263459d028a714d731b4b729547f5989498b137dStephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 5263459d028a714d731b4b729547f5989498b137dStephen Hines * you may not use this file except in compliance with the License. 6263459d028a714d731b4b729547f5989498b137dStephen Hines * You may obtain a copy of the License at 7263459d028a714d731b4b729547f5989498b137dStephen Hines * 8263459d028a714d731b4b729547f5989498b137dStephen Hines * http://www.apache.org/licenses/LICENSE-2.0 9263459d028a714d731b4b729547f5989498b137dStephen Hines * 10263459d028a714d731b4b729547f5989498b137dStephen Hines * Unless required by applicable law or agreed to in writing, software 11263459d028a714d731b4b729547f5989498b137dStephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 12263459d028a714d731b4b729547f5989498b137dStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13263459d028a714d731b4b729547f5989498b137dStephen Hines * See the License for the specific language governing permissions and 14263459d028a714d731b4b729547f5989498b137dStephen Hines * limitations under the License. 15263459d028a714d731b4b729547f5989498b137dStephen Hines */ 16263459d028a714d731b4b729547f5989498b137dStephen Hines 17263459d028a714d731b4b729547f5989498b137dStephen Hinespackage com.android.rs.test; 18263459d028a714d731b4b729547f5989498b137dStephen Hines 19263459d028a714d731b4b729547f5989498b137dStephen Hinesimport android.content.Context; 20263459d028a714d731b4b729547f5989498b137dStephen Hinesimport android.content.res.Resources; 21263459d028a714d731b4b729547f5989498b137dStephen Hinesimport android.renderscript.*; 22263459d028a714d731b4b729547f5989498b137dStephen Hinesimport android.util.Log; 23263459d028a714d731b4b729547f5989498b137dStephen Hines 24263459d028a714d731b4b729547f5989498b137dStephen Hinespublic class UT_kernel extends UnitTest { 25263459d028a714d731b4b729547f5989498b137dStephen Hines private Resources mRes; 26263459d028a714d731b4b729547f5989498b137dStephen Hines private Allocation A; 27263459d028a714d731b4b729547f5989498b137dStephen Hines private Allocation B; 28263459d028a714d731b4b729547f5989498b137dStephen Hines 29263459d028a714d731b4b729547f5989498b137dStephen Hines protected UT_kernel(RSTestCore rstc, Resources res, Context ctx) { 30263459d028a714d731b4b729547f5989498b137dStephen Hines super(rstc, "Kernels (pass-by-value)", ctx); 31263459d028a714d731b4b729547f5989498b137dStephen Hines mRes = res; 32263459d028a714d731b4b729547f5989498b137dStephen Hines } 33263459d028a714d731b4b729547f5989498b137dStephen Hines 34263459d028a714d731b4b729547f5989498b137dStephen Hines private void initializeGlobals(RenderScript RS, ScriptC_kernel s) { 35263459d028a714d731b4b729547f5989498b137dStephen Hines Type.Builder typeBuilder = new Type.Builder(RS, Element.I32(RS)); 36263459d028a714d731b4b729547f5989498b137dStephen Hines int X = 5; 37263459d028a714d731b4b729547f5989498b137dStephen Hines s.set_dimX(X); 38263459d028a714d731b4b729547f5989498b137dStephen Hines typeBuilder.setX(X); 39263459d028a714d731b4b729547f5989498b137dStephen Hines A = Allocation.createTyped(RS, typeBuilder.create()); 40263459d028a714d731b4b729547f5989498b137dStephen Hines s.bind_ain(A); 41263459d028a714d731b4b729547f5989498b137dStephen Hines B = Allocation.createTyped(RS, typeBuilder.create()); 42263459d028a714d731b4b729547f5989498b137dStephen Hines s.bind_aout(B); 43263459d028a714d731b4b729547f5989498b137dStephen Hines 44263459d028a714d731b4b729547f5989498b137dStephen Hines return; 45263459d028a714d731b4b729547f5989498b137dStephen Hines } 46263459d028a714d731b4b729547f5989498b137dStephen Hines 47263459d028a714d731b4b729547f5989498b137dStephen Hines public void run() { 48263459d028a714d731b4b729547f5989498b137dStephen Hines RenderScript pRS = RenderScript.create(mCtx); 49263459d028a714d731b4b729547f5989498b137dStephen Hines ScriptC_kernel s = new ScriptC_kernel(pRS); 50263459d028a714d731b4b729547f5989498b137dStephen Hines pRS.setMessageHandler(mRsMessage); 51263459d028a714d731b4b729547f5989498b137dStephen Hines initializeGlobals(pRS, s); 52263459d028a714d731b4b729547f5989498b137dStephen Hines s.forEach_init_vars(A); 53263459d028a714d731b4b729547f5989498b137dStephen Hines s.forEach_root(A, B); 54263459d028a714d731b4b729547f5989498b137dStephen Hines s.invoke_verify_root(); 55263459d028a714d731b4b729547f5989498b137dStephen Hines s.invoke_kernel_test(); 56263459d028a714d731b4b729547f5989498b137dStephen Hines pRS.finish(); 57263459d028a714d731b4b729547f5989498b137dStephen Hines waitForMessage(); 58263459d028a714d731b4b729547f5989498b137dStephen Hines pRS.destroy(); 59263459d028a714d731b4b729547f5989498b137dStephen Hines } 60263459d028a714d731b4b729547f5989498b137dStephen Hines} 61