Edit

kc3-lang/angle/src/tests/compiler_tests/Pack_Unpack_test.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2018-11-27 11:34:27
    Hash : b980c563
    Message : Reformat all cpp and h files. This applies git cl format --full to all ANGLE sources. Bug: angleproject:2986 Change-Id: Ib504e618c1589332a37e97696cdc3515d739308f Reviewed-on: https://chromium-review.googlesource.com/c/1351367 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>

  • src/tests/compiler_tests/Pack_Unpack_test.cpp
  • //
    // Copyright (c) 2015 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.
    //
    // Pack_Unpack_test.cpp:
    //   Tests for the emulating pack_unpack functions for GLSL.
    //
    
    #include "GLSLANG/ShaderLang.h"
    #include "angle_gl.h"
    #include "gtest/gtest.h"
    #include "tests/test_utils/compiler_test.h"
    
    using namespace sh;
    
    namespace
    {
    
    class PackUnpackTest : public MatchOutputCodeTest
    {
      public:
        PackUnpackTest() : MatchOutputCodeTest(GL_FRAGMENT_SHADER, 0, SH_GLSL_400_CORE_OUTPUT) {}
    };
    
    // Check if PackSnorm2x16 Emulation for GLSL < 4.2 compile correctly.
    TEST_F(PackUnpackTest, PackSnorm2x16Emulation)
    {
        const std::string &shaderString =
            R"(#version 300 es
            precision mediump float;
            layout(location = 0) out mediump vec4 fragColor;
            void main()
            {
               vec2 v;
               uint u = packSnorm2x16(v);
               fragColor = vec4(u);
            })";
        compile(shaderString);
        ASSERT_TRUE(foundInCode("uint packSnorm2x16_emu(vec2 v)"));
    }
    
    // Check if UnpackSnorm2x16 Emulation for GLSL < 4.2 compile correctly.
    TEST_F(PackUnpackTest, UnpackSnorm2x16Emulation)
    {
        const std::string &shaderString =
            R"(#version 300 es
            precision mediump float;
            layout(location = 0) out mediump vec4 fragColor;
            void main()
            {
               uint u;
               vec2 v = unpackSnorm2x16(u);
               fragColor = vec4(v, 0.0, 0.0);
            })";
        compile(shaderString);
        ASSERT_TRUE(foundInCode("vec2 unpackSnorm2x16_emu(uint u)"));
    }
    
    // Check if PackUnorm2x16 Emulation for GLSL < 4.1 compiles correctly.
    TEST_F(PackUnpackTest, PackUnorm2x16Emulation)
    {
        const std::string &shaderString =
            R"(#version 300 es
            precision mediump float;
            layout(location = 0) out mediump vec4 fragColor;
            void main()
            {
               vec2 v;
               uint u = packUnorm2x16(v);
               fragColor = vec4(u);
            })";
        compile(shaderString);
        ASSERT_TRUE(foundInCode("uint packUnorm2x16_emu(vec2 v)"));
    }
    
    // Check if UnpackSnorm2x16 Emulation for GLSL < 4.1 compiles correctly.
    TEST_F(PackUnpackTest, UnpackUnorm2x16Emulation)
    {
        const std::string &shaderString =
            R"(#version 300 es
            precision mediump float;
            layout(location = 0) out mediump vec4 fragColor;
            void main()
            {
               uint u;
               vec2 v = unpackUnorm2x16(u);
               fragColor = vec4(v, 0.0, 0.0);
            })";
        compile(shaderString);
        ASSERT_TRUE(foundInCode("vec2 unpackUnorm2x16_emu(uint u)"));
    }
    
    // Check if PackHalf2x16 Emulation for GLSL < 4.2 compiles correctly.
    TEST_F(PackUnpackTest, PackHalf2x16Emulation)
    {
        const std::string &shaderString =
            R"(#version 300 es
            precision mediump float;
            layout(location = 0) out mediump vec4 fragColor;
            void main()
            {
                vec2 v;
                uint u = packHalf2x16(v);
                fragColor = vec4(u);
            })";
        compile(shaderString);
        ASSERT_TRUE(foundInCode("uint packHalf2x16_emu(vec2 v)"));
    }
    
    // Check if UnpackHalf2x16 Emulation for GLSL < 4.2 compiles correctly.
    TEST_F(PackUnpackTest, UnpackHalf2x16Emulation)
    {
        const std::string &shaderString =
            R"(#version 300 es
            precision mediump float;
            layout(location = 0) out mediump vec4 fragColor;
            void main()
            {
                uint u;
                vec2 v = unpackHalf2x16(u);
                fragColor = vec4(v, 0.0, 0.0);
            })";
        compile(shaderString);
        ASSERT_TRUE(foundInCode("vec2 unpackHalf2x16_emu(uint u)"));
    }
    
    }  // namespace