| // |
| // Copyright 2020 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // PrimtestTests.cpp: |
| // GLES1 conformance primtest tests. |
| // |
| |
| #include "GLES/gl.h" |
| #include "test_utils/ANGLETest.h" |
| #include "test_utils/gl_raii.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| // ES 1.0 |
| extern void DrawPrims(void); |
| |
| #include "primtest/driver.h" |
| #include "primtest/tproto.h" |
| |
| #ifdef __cplusplus |
| } |
| |
| #endif |
| |
| namespace angle |
| { |
| class GLES1PrimtestTest : public ANGLETest |
| { |
| protected: |
| GLES1PrimtestTest() |
| { |
| setWindowWidth(48); |
| setWindowHeight(48); |
| setConfigRedBits(8); |
| setConfigGreenBits(8); |
| setConfigBlueBits(8); |
| setConfigAlphaBits(8); |
| setConfigDepthBits(24); |
| setConfigStencilBits(8); |
| } |
| |
| void testTearDown() override |
| { |
| if (mTestData != nullptr) |
| { |
| free(mTestData); |
| } |
| } |
| |
| void execTest(long test) |
| { |
| long i; |
| for (i = 0; driver[i].test != TEST_NULL; i++) |
| { |
| if (driver[i].test == test) |
| { |
| break; |
| } |
| } |
| |
| ASSERT_NE(TEST_NULL, driver[i].test); |
| |
| driverRec &op = driver[i]; |
| |
| op.funcInit((void *)&mTestData); |
| op.finish = 0; |
| ASSERT_GL_NO_ERROR(); |
| |
| for (;;) |
| { |
| op.funcStatus(1, mTestData); |
| ASSERT_GL_NO_ERROR(); |
| |
| op.funcSet(1, mTestData); |
| ASSERT_GL_NO_ERROR(); |
| |
| DrawPrims(); |
| ASSERT_GL_NO_ERROR(); |
| |
| long finish = op.funcUpdate(mTestData); |
| ASSERT_GL_NO_ERROR(); |
| if (finish) |
| { |
| break; |
| } |
| }; |
| } |
| |
| protected: |
| void *mTestData; |
| }; |
| |
| TEST_P(GLES1PrimtestTest, Hint) |
| { |
| execTest(TEST_HINT); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Alias) |
| { |
| execTest(TEST_ALIAS); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Alpha) |
| { |
| execTest(TEST_ALPHA); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Blend) |
| { |
| execTest(TEST_BLEND); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Depth) |
| { |
| execTest(TEST_DEPTH); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Dither) |
| { |
| execTest(TEST_DITHER); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Fog) |
| { |
| execTest(TEST_FOG); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Light) |
| { |
| execTest(TEST_LIGHT); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Logic) |
| { |
| execTest(TEST_LOGICOP); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Scissor) |
| { |
| execTest(TEST_SCISSOR); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Shade) |
| { |
| execTest(TEST_SHADE); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Stencil) |
| { |
| execTest(TEST_STENCIL); |
| } |
| |
| TEST_P(GLES1PrimtestTest, Texture) |
| { |
| execTest(TEST_TEXTURE); |
| } |
| |
| ANGLE_INSTANTIATE_TEST(GLES1PrimtestTest, ES1_OPENGL(), ES1_VULKAN()); |
| } // namespace angle |
| |
| // Included here to fix a compile error due to white box tests using angle_end2end_tests_main. |
| void RegisterContextCompatibilityTests() {} |