summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/src/tests/compiler_tests/Pack_Unpack_test.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/ThirdParty/ANGLE/src/tests/compiler_tests/Pack_Unpack_test.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/tests/compiler_tests/Pack_Unpack_test.cpp')
-rw-r--r--Source/ThirdParty/ANGLE/src/tests/compiler_tests/Pack_Unpack_test.cpp120
1 files changed, 120 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/Pack_Unpack_test.cpp b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/Pack_Unpack_test.cpp
new file mode 100644
index 000000000..85673d5f7
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/Pack_Unpack_test.cpp
@@ -0,0 +1,120 @@
+//
+// 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 "angle_gl.h"
+#include "gtest/gtest.h"
+#include "GLSLANG/ShaderLang.h"
+#include "tests/test_utils/compiler_test.h"
+
+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 =
+ "#version 300 es\n"
+ "precision mediump float;\n"
+ "layout(location = 0) out mediump vec4 fragColor;"
+ "void main() {\n"
+ " vec2 v;\n"
+ " uint u = packSnorm2x16(v);\n"
+ " fragColor = vec4(0.0);\n"
+ "}\n";
+ compile(shaderString);
+ ASSERT_TRUE(foundInCode("uint webgl_packSnorm2x16_emu(vec2 v)"));
+}
+
+// Check if UnpackSnorm2x16 Emulation for GLSL < 4.2 compile correctly.
+TEST_F(PackUnpackTest, UnpackSnorm2x16Emulation)
+{
+ const std::string &shaderString =
+ "#version 300 es\n"
+ "precision mediump float;\n"
+ "layout(location = 0) out mediump vec4 fragColor;"
+ "void main() {\n"
+ " uint u;\n"
+ " vec2 v=unpackSnorm2x16(u);\n"
+ " fragColor = vec4(0.0);\n"
+ "}\n";
+ compile(shaderString);
+ ASSERT_TRUE(foundInCode("vec2 webgl_unpackSnorm2x16_emu(uint u)"));
+}
+
+// Check if PackUnorm2x16 Emulation for GLSL < 4.1 compiles correctly.
+TEST_F(PackUnpackTest, PackUnorm2x16Emulation)
+{
+ const std::string &shaderString =
+ "#version 300 es\n"
+ "precision mediump float;\n"
+ "layout(location = 0) out mediump vec4 fragColor;"
+ "void main() {\n"
+ " vec2 v;\n"
+ " uint u = packUnorm2x16(v);\n"
+ " fragColor = vec4(0.0);\n"
+ "}\n";
+ compile(shaderString);
+ ASSERT_TRUE(foundInCode("uint webgl_packUnorm2x16_emu(vec2 v)"));
+}
+
+// Check if UnpackSnorm2x16 Emulation for GLSL < 4.1 compiles correctly.
+TEST_F(PackUnpackTest, UnpackUnorm2x16Emulation)
+{
+ const std::string &shaderString =
+ "#version 300 es\n"
+ "precision mediump float;\n"
+ "layout(location = 0) out mediump vec4 fragColor;"
+ "void main() {\n"
+ " uint u;\n"
+ " vec2 v=unpackUnorm2x16(u);\n"
+ " fragColor = vec4(0.0);\n"
+ "}\n";
+ compile(shaderString);
+ ASSERT_TRUE(foundInCode("vec2 webgl_unpackUnorm2x16_emu(uint u)"));
+}
+
+// Check if PackHalf2x16 Emulation for GLSL < 4.2 compiles correctly.
+TEST_F(PackUnpackTest, PackHalf2x16Emulation)
+{
+ const std::string &shaderString =
+ "#version 300 es\n"
+ "precision mediump float;\n"
+ "layout(location = 0) out mediump vec4 fragColor;"
+ "void main() {\n"
+ " vec2 v;\n"
+ " uint u=packHalf2x16(v);\n"
+ " fragColor = vec4(0.0);\n"
+ "}\n";
+ compile(shaderString);
+ ASSERT_TRUE(foundInCode("uint webgl_packHalf2x16_emu(vec2 v)"));
+}
+
+// Check if UnpackHalf2x16 Emulation for GLSL < 4.2 compiles correctly.
+TEST_F(PackUnpackTest, UnpackHalf2x16Emulation)
+{
+ const std::string &shaderString =
+ "#version 300 es\n"
+ "precision mediump float;\n"
+ "layout(location = 0) out mediump vec4 fragColor;"
+ "void main() {\n"
+ " uint u;\n"
+ " vec2 v=unpackHalf2x16(u);\n"
+ " fragColor = vec4(0.0);\n"
+ "}\n";
+ compile(shaderString);
+ ASSERT_TRUE(foundInCode("vec2 webgl_unpackHalf2x16_emu(uint u)"));
+}
+
+} // namespace