16cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks/* 26cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * Copyright (C) 2017 The Android Open Source Project 36cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * 46cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * Licensed under the Apache License, Version 2.0 (the "License"); 56cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * you may not use this file except in compliance with the License. 66cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * You may obtain a copy of the License at 76cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * 86cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * http://www.apache.org/licenses/LICENSE-2.0 96cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * 106cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * Unless required by applicable law or agreed to in writing, software 116cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * distributed under the License is distributed on an "AS IS" BASIS, 126cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * See the License for the specific language governing permissions and 146cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * limitations under the License. 156cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks */ 166cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks 176cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubankspackage com.android.rs.unittest; 186cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks 196cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.content.Context; 206cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.renderscript.Allocation; 216cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.renderscript.Element; 226cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.renderscript.RenderScript; 236cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.renderscript.Type; 246cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks 256cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubankspublic class UT_alloc_supportlib extends UnitTest { 266cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks private Type T; 276cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks private Type mTFaces; 286cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks private Type mTLOD; 296cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks private Type mTFacesLOD; 306cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks private Allocation mAFaces; 316cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks private Allocation mALOD; 326cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks private Allocation mAFacesLOD; 336cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks 346cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks public UT_alloc_supportlib(Context ctx) { 356cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks super("Alloc (Support Lib)", ctx); 366cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks } 376cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks 386cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks private void initializeGlobals(RenderScript RS, ScriptC_alloc_supportlib s) { 396cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks Type.Builder typeBuilder = new Type.Builder(RS, Element.I32(RS)); 406cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks int X = 5; 416cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks int Y = 7; 426cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks int Z = 0; 436cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.set_dimX(X); 446cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.set_dimY(Y); 456cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.set_dimZ(Z); 466cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks typeBuilder.setX(X).setY(Y); 476cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks T = typeBuilder.create(); 486cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks Allocation A = Allocation.createTyped(RS, T); 496cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.bind_a(A); 506cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.set_aRaw(A); 516cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks 526cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks typeBuilder = new Type.Builder(RS, Element.I32(RS)); 536cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks typeBuilder.setX(X).setY(Y).setFaces(true); 546cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mTFaces = typeBuilder.create(); 556cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mAFaces = Allocation.createTyped(RS, mTFaces); 566cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.set_aFaces(mAFaces); 576cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks typeBuilder.setFaces(false).setMipmaps(true); 586cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mTLOD = typeBuilder.create(); 596cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mALOD = Allocation.createTyped(RS, mTLOD); 606cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.set_aLOD(mALOD); 616cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks typeBuilder.setFaces(true).setMipmaps(true); 626cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mTFacesLOD = typeBuilder.create(); 636cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mAFacesLOD = Allocation.createTyped(RS, mTFacesLOD); 646cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.set_aFacesLOD(mAFacesLOD); 656cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks 666cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks return; 676cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks } 686cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks 696cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks public void run() { 706cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks RenderScript pRS = createRenderScript(true); 716cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks ScriptC_alloc_supportlib s = new ScriptC_alloc_supportlib(pRS); 726cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks initializeGlobals(pRS, s); 736cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.forEach_root(s.get_aRaw()); 746cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.invoke_alloc_supportlib_test(); 756cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks pRS.finish(); 766cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks T.destroy(); 776cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.get_a().destroy(); 786cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mAFaces.destroy(); 796cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mALOD.destroy(); 806cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mAFacesLOD.destroy(); 816cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mTFaces.destroy(); 826cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mTLOD.destroy(); 836cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks mTFacesLOD.destroy(); 846cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks s.destroy(); 856cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks pRS.destroy(); 866cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks } 876cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks} 88