Edit

kc3-lang/angle/tests/angle_tests/UniformTest.cpp

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2014-10-23 11:08:16
    Hash : 0d3683c4
    Message : Update ANGLE_platform_angle to allow requesting of Renderer versions. Added enums to allow users to request major and minor versions of the underlying API and if a WARP device is used. BUG=angle:490 Change-Id: I0bfb2ac8d327da28a47cc8e6346300e47ab9538c Reviewed-on: https://chromium-review.googlesource.com/225081 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>

  • tests/angle_tests/UniformTest.cpp
  • #include "ANGLETest.h"
    
    // Use this to select which configurations (e.g. which renderer, which GLES major version) these tests should be run against.
    ANGLE_TYPED_TEST_CASE(UniformTest, ES2_D3D9, ES2_D3D11);
    
    template<typename T>
    class UniformTest : public ANGLETest
    {
      protected:
        UniformTest() : ANGLETest(T::GetGlesMajorVersion(), T::GetPlatform())
        {
            setWindowWidth(128);
            setWindowHeight(128);
            setConfigRedBits(8);
            setConfigGreenBits(8);
            setConfigBlueBits(8);
            setConfigAlphaBits(8);
        }
    
        virtual void SetUp()
        {
            ANGLETest::SetUp();
    
            const std::string &vertexShader = "void main() { gl_Position = vec4(1); }";
            const std::string &fragShader =
                "precision mediump float;\n"
                "uniform float uniF;\n"
                "uniform int uniI;\n"
                "void main() { gl_FragColor = vec4(uniF + float(uniI)); }";
    
            mProgram = CompileProgram(vertexShader, fragShader);
            ASSERT_NE(mProgram, 0u);
    
            mUniformFLocation = glGetUniformLocation(mProgram, "uniF");
            ASSERT_NE(mUniformFLocation, -1);
    
            mUniformILocation = glGetUniformLocation(mProgram, "uniI");
            ASSERT_NE(mUniformILocation, -1);
    
            ASSERT_GL_NO_ERROR();
        }
    
        virtual void TearDown()
        {
            glDeleteProgram(mProgram);
            ANGLETest::TearDown();
        }
    
        GLuint mProgram;
        GLint mUniformFLocation;
        GLint mUniformILocation;
    };
    
    TYPED_TEST(UniformTest, GetUniformNoCurrentProgram)
    {
        glUseProgram(mProgram);
        glUniform1f(mUniformFLocation, 1.0f);
        glUniform1i(mUniformILocation, 1);
        glUseProgram(0);
    
        GLfloat f;
        glGetnUniformfvEXT(mProgram, mUniformFLocation, 4, &f);
        ASSERT_GL_NO_ERROR();
        EXPECT_EQ(1.0f, f);
    
        glGetUniformfv(mProgram, mUniformFLocation, &f);
        ASSERT_GL_NO_ERROR();
        EXPECT_EQ(1.0f, f);
    
        GLint i;
        glGetnUniformivEXT(mProgram, mUniformILocation, 4, &i);
        ASSERT_GL_NO_ERROR();
        EXPECT_EQ(1, i);
    
        glGetUniformiv(mProgram, mUniformILocation, &i);
        ASSERT_GL_NO_ERROR();
        EXPECT_EQ(1, i);
    }