17b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk/*
27b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project
37b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk *
47b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License");
57b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk * you may not use this file except in compliance with the License.
67b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk * You may obtain a copy of the License at
77b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk *
87b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk *      http://www.apache.org/licenses/LICENSE-2.0
97b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk *
107b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk * Unless required by applicable law or agreed to in writing, software
117b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS,
127b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk * See the License for the specific language governing permissions and
147b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk * limitations under the License.
157b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk */
167b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
177b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchoukpackage com.android.rs.test;
187b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
197b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchoukimport android.content.Context;
207b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchoukimport android.content.res.Resources;
217b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchoukimport android.renderscript.*;
227b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchoukimport android.renderscript.ProgramRaster;
237b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchoukimport android.renderscript.ProgramRaster.CullMode;
247b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
257b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchoukpublic class UT_program_raster extends UnitTest {
267b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    private Resources mRes;
277b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
287b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    ProgramRaster pointSpriteEnabled;
297b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    ProgramRaster cullMode;
307b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
317b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    protected UT_program_raster(RSTestCore rstc, Resources res, Context ctx) {
327b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        super(rstc, "ProgramRaster", ctx);
337b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        mRes = res;
347b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    }
357b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
367b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    private ProgramRaster.Builder getDefaultBuilder(RenderScript RS) {
377b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        ProgramRaster.Builder b = new ProgramRaster.Builder(RS);
387b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        b.setCullMode(CullMode.BACK);
397b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        b.setPointSpriteEnabled(false);
407b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        return b;
417b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    }
427b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
437b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    private void initializeGlobals(RenderScript RS, ScriptC_program_raster s) {
447b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        ProgramRaster.Builder b = getDefaultBuilder(RS);
457b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        pointSpriteEnabled = b.setPointSpriteEnabled(true).create();
467b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        b = getDefaultBuilder(RS);
477b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        cullMode = b.setCullMode(CullMode.FRONT).create();
487b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
497b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        s.set_pointSpriteEnabled(pointSpriteEnabled);
507b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        s.set_cullMode(cullMode);
517b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    }
527b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
537b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    private void testScriptSide(RenderScript pRS) {
5458b2b2412864891686bf0e2c9940ad2b58808822Stephen Hines        ScriptC_program_raster s = new ScriptC_program_raster(pRS);
557b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        pRS.setMessageHandler(mRsMessage);
567b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        initializeGlobals(pRS, s);
577b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        s.invoke_program_raster_test();
587b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        pRS.finish();
597b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        waitForMessage();
607b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    }
617b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
627b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    private void testJavaSide(RenderScript RS) {
63918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk        _RS_ASSERT("pointSpriteEnabled.isPointSpriteEnabled() == true",
64918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk                    pointSpriteEnabled.isPointSpriteEnabled() == true);
657b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        _RS_ASSERT("pointSpriteEnabled.getCullMode() == ProgramRaster.CullMode.BACK",
667b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk                    pointSpriteEnabled.getCullMode() == ProgramRaster.CullMode.BACK);
677b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
68918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk        _RS_ASSERT("cullMode.isPointSpriteEnabled() == false",
69918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk                    cullMode.isPointSpriteEnabled() == false);
707b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        _RS_ASSERT("cullMode.getCullMode() == ProgramRaster.CullMode.FRONT",
717b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk                    cullMode.getCullMode() == ProgramRaster.CullMode.FRONT);
727b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    }
737b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk
747b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    public void run() {
757b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        RenderScript pRS = RenderScript.create(mCtx);
767b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        testScriptSide(pRS);
777b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        testJavaSide(pRS);
78a9431e1018edf307216d800b36d23e37ddfa5128Stephen Hines        passTest();
797b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk        pRS.destroy();
807b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk    }
817b78d1a57a6602a5861092015b8a5708ec75aef8Alex Sakhartchouk}
82