10d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks// This file is automatically generated from 20d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks// frameworks/rs/tests/java_api/RSUnitTests/RSUnitTests.py 30d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks/* 40d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * Copyright (C) 2017 The Android Open Source Project 50d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * 60d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * Licensed under the Apache License, Version 2.0 (the "License"); 70d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * you may not use this file except in compliance with the License. 80d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * You may obtain a copy of the License at 90d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * 100d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * http://www.apache.org/licenses/LICENSE-2.0 110d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * 120d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * Unless required by applicable law or agreed to in writing, software 130d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * distributed under the License is distributed on an "AS IS" BASIS, 140d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 150d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * See the License for the specific language governing permissions and 160d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * limitations under the License. 170d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks */ 180d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 190d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubankspackage com.android.rs.unittest; 200d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 210d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.content.Context; 220d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.RenderScript; 230d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 240d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubankspublic class UT_single_source_alloc extends UnitTest { 250d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks private int dimX = 3; 260d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks private int dimY = 4; 270d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks private int dimZ = 5; 280d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks private int start = 23; 290d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 300d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks // Mimicking enum rs_data_type in frameworks/rs/script_api/include/rs_object_types.rsh 310d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks private enum rsDataType { 320d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_FLOAT_16 (1), 330d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_FLOAT_32 (2), 340d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_FLOAT_64 (3), 350d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_SIGNED_8 (4), 360d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_SIGNED_16 (5), 370d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_SIGNED_32 (6), 380d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_SIGNED_64 (7), 390d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_UNSIGNED_8 (8), 400d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_UNSIGNED_16 (9), 410d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_UNSIGNED_32 (10), 420d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RS_TYPE_UNSIGNED_64 (11); 430d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 440d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks private int value; 450d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 460d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks rsDataType(int value) { this.value = value; } 470d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks public int Value() { return value; } 480d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks } 490d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 500d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks public UT_single_source_alloc(Context ctx) { 510d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks super("SingleSourceAllocation", ctx); 520d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks } 530d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 540d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks private void initializeGlobals(RenderScript RS, ScriptC_single_source_alloc s, int nDims) { 550d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks s.set_gDimX(dimX); 560d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks s.set_gDimY(nDims > 1 ? dimY : 0); 570d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks s.set_gDimZ(nDims > 2 ? dimZ : 0); 580d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks s.set_gStart(start); 590d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 600d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks return; 610d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks } 620d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 630d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks public void run() { 640d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks RenderScript pRS = createRenderScript(true); 650d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks ScriptC_single_source_alloc s = new ScriptC_single_source_alloc(pRS); 660d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 670d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks // Test 1-D, 2-D and 3-D Allocations of basic RenderScript types by creating Allocations and 680d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks // invoking a kernel on them. 690d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks for (rsDataType dataType : rsDataType.values()) { 700d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks for (int vecSize = 1; vecSize <= 4; vecSize++) { 710d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks for (int nDims = 1; nDims <= 3; nDims++) { 720d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks initializeGlobals(pRS, s, nDims); 730d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks s.invoke_CreateAndTestAlloc(dataType.Value(), vecSize); 740d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks } 750d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks } 760d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks } 770d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 780d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks // Exhaustively test valid and invalid calls to rs_* creation functions. (These tests don't 790d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks // walk the created allocations, though.) 800d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks s.invoke_TestAllCases(); 810d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks 820d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks s.invoke_single_source_alloc_test(); 830d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks pRS.finish(); 840d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks s.destroy(); 850d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks pRS.destroy(); 860d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks } 870d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks} 88