13aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk/*
23aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project
33aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk *
43aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License");
53aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk * you may not use this file except in compliance with the License.
63aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk * You may obtain a copy of the License at
73aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk *
83aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk *      http://www.apache.org/licenses/LICENSE-2.0
93aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk *
103aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk * Unless required by applicable law or agreed to in writing, software
113aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS,
123aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk * See the License for the specific language governing permissions and
143aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk * limitations under the License.
153aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk */
163aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
173aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchoukpackage com.android.rs.test;
183aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
193aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchoukimport android.content.Context;
203aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchoukimport android.content.res.Resources;
213aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchoukimport android.renderscript.*;
223aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchoukimport android.renderscript.Mesh.*;
233aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
243aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchoukpublic class UT_mesh extends UnitTest {
253aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    private Resources mRes;
263aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
273aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    Mesh mesh;
283aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
293aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    protected UT_mesh(RSTestCore rstc, Resources res, Context ctx) {
303aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        super(rstc, "Mesh", ctx);
313aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        mRes = res;
323aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    }
333aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
343aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    private void initializeGlobals(RenderScript RS, ScriptC_mesh s) {
353aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        Allocation vAlloc0 = Allocation.createSized(RS, Element.F32(RS), 10);
363aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        Allocation vAlloc1 = Allocation.createSized(RS, Element.F32_2(RS), 10);
373aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
383aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        Allocation iAlloc0 = Allocation.createSized(RS, Element.I16(RS), 10);
393aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        Allocation iAlloc2 = Allocation.createSized(RS, Element.I16(RS), 10);
403aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
413aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        Mesh.AllocationBuilder mBuilder = new Mesh.AllocationBuilder(RS);
423aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        mBuilder.addVertexAllocation(vAlloc0);
433aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        mBuilder.addVertexAllocation(vAlloc1);
443aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
453aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        mBuilder.addIndexSetAllocation(iAlloc0, Primitive.POINT);
463aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        mBuilder.addIndexSetType(Primitive.LINE);
473aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        mBuilder.addIndexSetAllocation(iAlloc2, Primitive.TRIANGLE);
483aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
493aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        s.set_mesh(mBuilder.create());
503aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        s.set_vertexAlloc0(vAlloc0);
513aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        s.set_vertexAlloc1(vAlloc1);
523aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        s.set_indexAlloc0(iAlloc0);
533aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        s.set_indexAlloc2(iAlloc2);
543aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    }
553aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
563aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    private void testScriptSide(RenderScript pRS) {
5758b2b2412864891686bf0e2c9940ad2b58808822Stephen Hines        ScriptC_mesh s = new ScriptC_mesh(pRS);
583aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        pRS.setMessageHandler(mRsMessage);
593aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        initializeGlobals(pRS, s);
603aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        s.invoke_mesh_test();
613aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        pRS.finish();
623aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        waitForMessage();
633aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    }
643aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
653aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    private void testJavaSide(RenderScript RS) {
663aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    }
673aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk
683aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    public void run() {
693aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        RenderScript pRS = RenderScript.create(mCtx);
703aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        testScriptSide(pRS);
713aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        testJavaSide(pRS);
72a9431e1018edf307216d800b36d23e37ddfa5128Stephen Hines        passTest();
733aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk        pRS.destroy();
743aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk    }
753aac0abe7965ce9e2078c7d5796805d83e39df7cAlex Sakhartchouk}
76