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