Edit

kc3-lang/angle/src/tests/gles1_conformance_tests/PrimtestTests.cpp

Branch :

  • Show log

    Commit

  • Author : Ancheng Qiao
    Date : 2020-03-18 09:42:37
    Hash : 1478ec3c
    Message : Add gles1 primtest tests Bug: angleproject:2303 Change-Id: Idece2eb2fb291799c9aae811ce63dafdd9333887 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2143029 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>

  • src/tests/gles1_conformance_tests/PrimtestTests.cpp
  • //
    // 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() {}