Finish ANGLE update
https://bugs.webkit.org/show_bug.cgi?id=204911
The last ANGLE update patch didn't include all the changed files.
This patch updates the rest of the files.
Patch by James Darpinian <jdarpinian@chromium.org> on 2019-12-05
Reviewed by Alex Christensen.
* src/tests: Lots of changed files from upstream ANGLE.
* src/third_party/compiler/README.chromium:
* third_party/VK-GL-CTS/README.angle: Added.
* third_party/deqp/README.angle: Removed.
* third_party/googletest/README.angle: Removed.
* third_party/libpng/BUILD.gn:
* third_party/spirv-cross/README.angle: Added.
* util/OSWindow.h:
* util/egl_loader_autogen.cpp:
(angle::LoadEGL):
* util/egl_loader_autogen.h:
* util/fuchsia/ScenicWindow.cpp:
(ScenicWindow::resetNativeWindow):
* util/fuchsia/ScenicWindow.h:
* util/gles_loader_autogen.cpp:
(angle::LoadGLES):
* util/gles_loader_autogen.h:
* util/osx/OSXWindow.h:
* util/osx/OSXWindow.mm:
(OSXWindow::initialize):
* util/ozone/OzoneWindow.h:
* util/posix/crash_handler_posix.cpp:
(angle::InitCrashHandler):
* util/posix/test_utils_posix.cpp:
(angle::GetTempDir):
(angle::CreateTemporaryFileInDir):
(angle::DeleteFile):
(angle::LaunchProcess):
(angle::NumberOfProcessors):
* util/shader_utils.cpp:
(CompileShaderFromFile):
(CompileProgramFromFiles):
* util/test_utils.cpp: Added.
(angle::CreateTemporaryFile):
(angle::GetFileSize):
(angle::ReadEntireFileToString):
(angle::ProcessHandle::ProcessHandle):
(angle::ProcessHandle::~ProcessHandle):
(angle::ProcessHandle::operator=):
(angle::ProcessHandle::reset):
* util/test_utils.h:
* util/test_utils_unittest.cpp: Added.
(angle::NormalizeNewLines):
(angle::TEST):
* util/test_utils_unittest_helper.cpp: Added.
(main):
* util/test_utils_unittest_helper.h: Added.
* util/util.gni:
* util/windows/WGLWindow.cpp:
* util/windows/test_utils_win.cpp:
(angle::InitCrashHandler):
(angle::TerminateCrashHandler):
(angle::LaunchProcess):
(angle::GetTempDir):
(angle::CreateTemporaryFileInDir):
(angle::DeleteFile):
(angle::NumberOfProcessors):
* util/windows/win32/Win32Window.cpp:
(Win32Window::initialize):
* util/windows/win32/test_utils_win32.cpp:
(angle::StabilizeCPUForBenchmarking):
* util/x11/X11Window.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@253192 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/ThirdParty/ANGLE/ChangeLog b/Source/ThirdParty/ANGLE/ChangeLog
index 10fd032..bcc4ddf 100644
--- a/Source/ThirdParty/ANGLE/ChangeLog
+++ b/Source/ThirdParty/ANGLE/ChangeLog
@@ -1,3 +1,76 @@
+2019-12-05 James Darpinian <jdarpinian@chromium.org>
+
+ Finish ANGLE update
+ https://bugs.webkit.org/show_bug.cgi?id=204911
+
+ The last ANGLE update patch didn't include all the changed files.
+ This patch updates the rest of the files.
+
+ Reviewed by Alex Christensen.
+
+ * src/tests: Lots of changed files from upstream ANGLE.
+ * src/third_party/compiler/README.chromium:
+ * third_party/VK-GL-CTS/README.angle: Added.
+ * third_party/deqp/README.angle: Removed.
+ * third_party/googletest/README.angle: Removed.
+ * third_party/libpng/BUILD.gn:
+ * third_party/spirv-cross/README.angle: Added.
+ * util/OSWindow.h:
+ * util/egl_loader_autogen.cpp:
+ (angle::LoadEGL):
+ * util/egl_loader_autogen.h:
+ * util/fuchsia/ScenicWindow.cpp:
+ (ScenicWindow::resetNativeWindow):
+ * util/fuchsia/ScenicWindow.h:
+ * util/gles_loader_autogen.cpp:
+ (angle::LoadGLES):
+ * util/gles_loader_autogen.h:
+ * util/osx/OSXWindow.h:
+ * util/osx/OSXWindow.mm:
+ (OSXWindow::initialize):
+ * util/ozone/OzoneWindow.h:
+ * util/posix/crash_handler_posix.cpp:
+ (angle::InitCrashHandler):
+ * util/posix/test_utils_posix.cpp:
+ (angle::GetTempDir):
+ (angle::CreateTemporaryFileInDir):
+ (angle::DeleteFile):
+ (angle::LaunchProcess):
+ (angle::NumberOfProcessors):
+ * util/shader_utils.cpp:
+ (CompileShaderFromFile):
+ (CompileProgramFromFiles):
+ * util/test_utils.cpp: Added.
+ (angle::CreateTemporaryFile):
+ (angle::GetFileSize):
+ (angle::ReadEntireFileToString):
+ (angle::ProcessHandle::ProcessHandle):
+ (angle::ProcessHandle::~ProcessHandle):
+ (angle::ProcessHandle::operator=):
+ (angle::ProcessHandle::reset):
+ * util/test_utils.h:
+ * util/test_utils_unittest.cpp: Added.
+ (angle::NormalizeNewLines):
+ (angle::TEST):
+ * util/test_utils_unittest_helper.cpp: Added.
+ (main):
+ * util/test_utils_unittest_helper.h: Added.
+ * util/util.gni:
+ * util/windows/WGLWindow.cpp:
+ * util/windows/test_utils_win.cpp:
+ (angle::InitCrashHandler):
+ (angle::TerminateCrashHandler):
+ (angle::LaunchProcess):
+ (angle::GetTempDir):
+ (angle::CreateTemporaryFileInDir):
+ (angle::DeleteFile):
+ (angle::NumberOfProcessors):
+ * util/windows/win32/Win32Window.cpp:
+ (Win32Window::initialize):
+ * util/windows/win32/test_utils_win32.cpp:
+ (angle::StabilizeCPUForBenchmarking):
+ * util/x11/X11Window.h:
+
2019-12-02 Ross Kirsling <ross.kirsling@sony.com>
Unreviewed WinCairo build fix following r252989.
diff --git a/Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni b/Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni
index 9b7bed6..f788a3e 100644
--- a/Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni
+++ b/Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni
@@ -43,6 +43,7 @@
"gl_tests/FramebufferRenderMipmapTest.cpp",
"gl_tests/FramebufferTest.cpp",
"gl_tests/GeometryShaderTest.cpp",
+ "gl_tests/GetImageTest.cpp",
"gl_tests/gles1/AlphaFuncTest.cpp",
"gl_tests/gles1/BasicDrawTest.cpp",
"gl_tests/gles1/ClientActiveTextureTest.cpp",
@@ -81,6 +82,7 @@
"gl_tests/MipmapTest.cpp",
"gl_tests/MultiDrawTest.cpp",
"gl_tests/MultisampleCompatibilityTest.cpp",
+ "gl_tests/MultisampledRenderToTextureTest.cpp",
"gl_tests/MultisampleTest.cpp",
"gl_tests/MultithreadingTest.cpp",
"gl_tests/MultiviewDrawTest.cpp",
@@ -139,6 +141,7 @@
"egl_tests/EGLCreateContextAttribsTest.cpp",
"egl_tests/EGLDebugTest.cpp",
"egl_tests/EGLNoConfigContextTest.cpp",
+ "egl_tests/EGLPrintEGLinfoTest.cpp",
"egl_tests/EGLProgramCacheControlTest.cpp",
"egl_tests/EGLQueryContextTest.cpp",
"egl_tests/EGLRecordableTest.cpp",
@@ -161,6 +164,8 @@
angle_end2end_tests_mac_sources = [
"egl_tests/EGLDeviceCGLTest.cpp",
"egl_tests/EGLIOSurfaceClientBufferTest.cpp",
+ "test_utils/angle_test_instantiate_apple.mm",
+ "test_utils/angle_test_instantiate_apple.h",
]
angle_end2end_tests_win_sources = [
"gl_tests/D3DImageFormatConversionTest.cpp",
diff --git a/Source/ThirdParty/ANGLE/src/tests/angle_perftests.gni b/Source/ThirdParty/ANGLE/src/tests/angle_perftests.gni
index 5b16a3b..e8f4356 100644
--- a/Source/ThirdParty/ANGLE/src/tests/angle_perftests.gni
+++ b/Source/ThirdParty/ANGLE/src/tests/angle_perftests.gni
@@ -19,6 +19,13 @@
"test_utils/gl_raii.h",
]
+if (is_mac) {
+ _angle_perf_test_common_sources += [
+ "test_utils/angle_test_instantiate_apple.mm",
+ "test_utils/angle_test_instantiate_apple.h",
+ ]
+}
+
angle_perf_tests_sources = _angle_perf_test_common_sources + [
"perf_tests/BlitFramebufferPerf.cpp",
"perf_tests/BindingPerf.cpp",
diff --git a/Source/ThirdParty/ANGLE/src/tests/angle_unittests.gni b/Source/ThirdParty/ANGLE/src/tests/angle_unittests.gni
index b1686cc..d6a86a3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/angle_unittests.gni
+++ b/Source/ThirdParty/ANGLE/src/tests/angle_unittests.gni
@@ -15,7 +15,6 @@
"../common/matrix_utils_unittest.cpp",
"../common/string_utils_unittest.cpp",
"../common/system_utils_unittest.cpp",
- "../common/system_utils_unittest_helper.h",
"../common/utilities_unittest.cpp",
"../common/vector_utils_unittest.cpp",
"../feature_support_util/feature_support_util_unittest.cpp",
@@ -130,6 +129,8 @@
"../tests/test_utils/ShaderCompileTreeTest.h",
"../tests/test_utils/ShaderCompileTreeTest.cpp",
"../tests/test_utils/ShaderExtensionTest.h",
+ "../../util/test_utils_unittest.cpp",
+ "../../util/test_utils_unittest_helper.h",
]
# TODO(jmadill): should probably call this windows sources
@@ -138,9 +139,9 @@
"../tests/compiler_tests/UnrollFlatten_test.cpp",
]
-angle_unittests_helper_sources = [
- "../common/system_utils_unittest_helper.cpp",
- "../common/system_utils_unittest_helper.h",
+test_utils_unittest_helper_sources = [
+ "../../util/test_utils_unittest_helper.cpp",
+ "../../util/test_utils_unittest_helper.h",
]
if (is_android) {
diff --git a/Source/ThirdParty/ANGLE/src/tests/angle_white_box_tests.gni b/Source/ThirdParty/ANGLE/src/tests/angle_white_box_tests.gni
index cc736f3..0c8221b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/angle_white_box_tests.gni
+++ b/Source/ThirdParty/ANGLE/src/tests/angle_white_box_tests.gni
@@ -25,3 +25,7 @@
"gl_tests/VulkanFormatTablesTest.cpp",
"gl_tests/VulkanUniformUpdatesTest.cpp",
]
+angle_white_box_tests_mac_sources = [
+ "test_utils/angle_test_instantiate_apple.mm",
+ "test_utils/angle_test_instantiate_apple.h",
+]
diff --git a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp
index acff961..0766cce 100644
--- a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp
@@ -16,33 +16,33 @@
TEST(ImmutableStringTest, ScriptGeneratedHashesMatch)
{
- ASSERT_EQ(0x0000026cu, ImmutableString("radians(00B").mangledNameHash());
+ ASSERT_EQ(0x0000026du, ImmutableString("radians(00B").mangledNameHash());
ASSERT_EQ(0x00000146u, ImmutableString("radians(10B").mangledNameHash());
ASSERT_EQ(0x00000108u, ImmutableString("radians(20B").mangledNameHash());
- ASSERT_EQ(0x0000039bu, ImmutableString("radians(30B").mangledNameHash());
+ ASSERT_EQ(0x0000039cu, ImmutableString("radians(30B").mangledNameHash());
ASSERT_EQ(0x000001d8u, ImmutableString("degrees(00B").mangledNameHash());
- ASSERT_EQ(0x0000031cu, ImmutableString("degrees(10B").mangledNameHash());
+ ASSERT_EQ(0x0000031du, ImmutableString("degrees(10B").mangledNameHash());
ASSERT_EQ(0x00000046u, ImmutableString("degrees(20B").mangledNameHash());
ASSERT_EQ(0x00000168u, ImmutableString("degrees(30B").mangledNameHash());
- ASSERT_EQ(0x00000347u, ImmutableString("sin(00B").mangledNameHash());
- ASSERT_EQ(0x00000203u, ImmutableString("sin(10B").mangledNameHash());
- ASSERT_EQ(0x00000224u, ImmutableString("sin(20B").mangledNameHash());
+ ASSERT_EQ(0x00000348u, ImmutableString("sin(00B").mangledNameHash());
+ ASSERT_EQ(0x00000204u, ImmutableString("sin(10B").mangledNameHash());
+ ASSERT_EQ(0x00000225u, ImmutableString("sin(20B").mangledNameHash());
ASSERT_EQ(0x0000010fu, ImmutableString("sin(30B").mangledNameHash());
- ASSERT_EQ(0x0000020fu, ImmutableString("cos(00B").mangledNameHash());
- ASSERT_EQ(0x00000356u, ImmutableString("cos(10B").mangledNameHash());
- ASSERT_EQ(0x00000399u, ImmutableString("cos(20B").mangledNameHash());
- ASSERT_EQ(0x000002b3u, ImmutableString("cos(30B").mangledNameHash());
- ASSERT_EQ(0x00000206u, ImmutableString("tan(00B").mangledNameHash());
- ASSERT_EQ(0x0000034du, ImmutableString("tan(10B").mangledNameHash());
- ASSERT_EQ(0x0000039du, ImmutableString("tan(20B").mangledNameHash());
+ ASSERT_EQ(0x00000210u, ImmutableString("cos(00B").mangledNameHash());
+ ASSERT_EQ(0x00000357u, ImmutableString("cos(10B").mangledNameHash());
+ ASSERT_EQ(0x0000039au, ImmutableString("cos(20B").mangledNameHash());
+ ASSERT_EQ(0x000002b4u, ImmutableString("cos(30B").mangledNameHash());
+ ASSERT_EQ(0x00000207u, ImmutableString("tan(00B").mangledNameHash());
+ ASSERT_EQ(0x0000034eu, ImmutableString("tan(10B").mangledNameHash());
+ ASSERT_EQ(0x0000039eu, ImmutableString("tan(20B").mangledNameHash());
ASSERT_EQ(0x000000f4u, ImmutableString("tan(30B").mangledNameHash());
- ASSERT_EQ(0x00000231u, ImmutableString("asin(00B").mangledNameHash());
- ASSERT_EQ(0x00000378u, ImmutableString("asin(10B").mangledNameHash());
+ ASSERT_EQ(0x00000232u, ImmutableString("asin(00B").mangledNameHash());
+ ASSERT_EQ(0x00000379u, ImmutableString("asin(10B").mangledNameHash());
ASSERT_EQ(0x00000018u, ImmutableString("asin(20B").mangledNameHash());
ASSERT_EQ(0x00000136u, ImmutableString("asin(30B").mangledNameHash());
ASSERT_EQ(0x00000060u, ImmutableString("acos(00B").mangledNameHash());
- ASSERT_EQ(0x000002e6u, ImmutableString("acos(10B").mangledNameHash());
- ASSERT_EQ(0x00000288u, ImmutableString("acos(20B").mangledNameHash());
+ ASSERT_EQ(0x000002e7u, ImmutableString("acos(10B").mangledNameHash());
+ ASSERT_EQ(0x00000289u, ImmutableString("acos(20B").mangledNameHash());
ASSERT_EQ(0x00000166u, ImmutableString("acos(30B").mangledNameHash());
ASSERT_EQ(0x000001f2u, ImmutableString("atan(00B00B").mangledNameHash());
ASSERT_EQ(0x00000031u, ImmutableString("atan(10B10B").mangledNameHash());
@@ -51,261 +51,261 @@
ASSERT_EQ(0x000001dfu, ImmutableString("atan(00B").mangledNameHash());
ASSERT_EQ(0x00000070u, ImmutableString("atan(10B").mangledNameHash());
ASSERT_EQ(0x00000086u, ImmutableString("atan(20B").mangledNameHash());
- ASSERT_EQ(0x00000323u, ImmutableString("atan(30B").mangledNameHash());
- ASSERT_EQ(0x0000028au, ImmutableString("sinh(00B").mangledNameHash());
- ASSERT_EQ(0x00000322u, ImmutableString("sinh(10B").mangledNameHash());
+ ASSERT_EQ(0x00000324u, ImmutableString("atan(30B").mangledNameHash());
+ ASSERT_EQ(0x0000028bu, ImmutableString("sinh(00B").mangledNameHash());
+ ASSERT_EQ(0x00000323u, ImmutableString("sinh(10B").mangledNameHash());
ASSERT_EQ(0x0000017eu, ImmutableString("sinh(20B").mangledNameHash());
ASSERT_EQ(0x000000ecu, ImmutableString("sinh(30B").mangledNameHash());
ASSERT_EQ(0x00000158u, ImmutableString("cosh(00B").mangledNameHash());
- ASSERT_EQ(0x00000306u, ImmutableString("cosh(10B").mangledNameHash());
- ASSERT_EQ(0x00000335u, ImmutableString("cosh(20B").mangledNameHash());
- ASSERT_EQ(0x00000267u, ImmutableString("cosh(30B").mangledNameHash());
+ ASSERT_EQ(0x00000307u, ImmutableString("cosh(10B").mangledNameHash());
+ ASSERT_EQ(0x00000336u, ImmutableString("cosh(20B").mangledNameHash());
+ ASSERT_EQ(0x00000268u, ImmutableString("cosh(30B").mangledNameHash());
ASSERT_EQ(0x00000047u, ImmutableString("tanh(00B").mangledNameHash());
ASSERT_EQ(0x00000167u, ImmutableString("tanh(10B").mangledNameHash());
- ASSERT_EQ(0x0000027cu, ImmutableString("tanh(20B").mangledNameHash());
+ ASSERT_EQ(0x0000027du, ImmutableString("tanh(20B").mangledNameHash());
ASSERT_EQ(0x0000000du, ImmutableString("tanh(30B").mangledNameHash());
- ASSERT_EQ(0x00000261u, ImmutableString("asinh(00B").mangledNameHash());
- ASSERT_EQ(0x000003a1u, ImmutableString("asinh(10B").mangledNameHash());
+ ASSERT_EQ(0x00000262u, ImmutableString("asinh(00B").mangledNameHash());
+ ASSERT_EQ(0x000003a2u, ImmutableString("asinh(10B").mangledNameHash());
ASSERT_EQ(0x000000f1u, ImmutableString("asinh(20B").mangledNameHash());
- ASSERT_EQ(0x0000020au, ImmutableString("asinh(30B").mangledNameHash());
+ ASSERT_EQ(0x0000020bu, ImmutableString("asinh(30B").mangledNameHash());
ASSERT_EQ(0x0000017bu, ImmutableString("acosh(00B").mangledNameHash());
ASSERT_EQ(0x000000abu, ImmutableString("acosh(10B").mangledNameHash());
ASSERT_EQ(0x0000001du, ImmutableString("acosh(20B").mangledNameHash());
- ASSERT_EQ(0x000002a3u, ImmutableString("acosh(30B").mangledNameHash());
+ ASSERT_EQ(0x000002a4u, ImmutableString("acosh(30B").mangledNameHash());
ASSERT_EQ(0x00000082u, ImmutableString("atanh(00B").mangledNameHash());
ASSERT_EQ(0x0000001eu, ImmutableString("atanh(10B").mangledNameHash());
- ASSERT_EQ(0x000002cbu, ImmutableString("atanh(20B").mangledNameHash());
+ ASSERT_EQ(0x000002ccu, ImmutableString("atanh(20B").mangledNameHash());
ASSERT_EQ(0x00000193u, ImmutableString("atanh(30B").mangledNameHash());
ASSERT_EQ(0x0000018du, ImmutableString("pow(00B00B").mangledNameHash());
ASSERT_EQ(0x0000008du, ImmutableString("pow(10B10B").mangledNameHash());
- ASSERT_EQ(0x000002feu, ImmutableString("pow(20B20B").mangledNameHash());
- ASSERT_EQ(0x00000217u, ImmutableString("pow(30B30B").mangledNameHash());
- ASSERT_EQ(0x0000030bu, ImmutableString("exp(00B").mangledNameHash());
+ ASSERT_EQ(0x000002ffu, ImmutableString("pow(20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000218u, ImmutableString("pow(30B30B").mangledNameHash());
+ ASSERT_EQ(0x0000030cu, ImmutableString("exp(00B").mangledNameHash());
ASSERT_EQ(0x00000077u, ImmutableString("exp(10B").mangledNameHash());
ASSERT_EQ(0x00000178u, ImmutableString("exp(20B").mangledNameHash());
- ASSERT_EQ(0x00000295u, ImmutableString("exp(30B").mangledNameHash());
- ASSERT_EQ(0x0000029cu, ImmutableString("log(00B").mangledNameHash());
+ ASSERT_EQ(0x00000296u, ImmutableString("exp(30B").mangledNameHash());
+ ASSERT_EQ(0x0000029du, ImmutableString("log(00B").mangledNameHash());
ASSERT_EQ(0x0000017cu, ImmutableString("log(10B").mangledNameHash());
ASSERT_EQ(0x00000135u, ImmutableString("log(20B").mangledNameHash());
ASSERT_EQ(0x000000ccu, ImmutableString("log(30B").mangledNameHash());
- ASSERT_EQ(0x0000039au, ImmutableString("exp2(00B").mangledNameHash());
+ ASSERT_EQ(0x0000039bu, ImmutableString("exp2(00B").mangledNameHash());
ASSERT_EQ(0x000000f9u, ImmutableString("exp2(10B").mangledNameHash());
ASSERT_EQ(0x00000144u, ImmutableString("exp2(20B").mangledNameHash());
- ASSERT_EQ(0x00000258u, ImmutableString("exp2(30B").mangledNameHash());
+ ASSERT_EQ(0x00000259u, ImmutableString("exp2(30B").mangledNameHash());
ASSERT_EQ(0x00000162u, ImmutableString("log2(00B").mangledNameHash());
ASSERT_EQ(0x0000008au, ImmutableString("log2(10B").mangledNameHash());
- ASSERT_EQ(0x00000317u, ImmutableString("log2(20B").mangledNameHash());
+ ASSERT_EQ(0x00000318u, ImmutableString("log2(20B").mangledNameHash());
ASSERT_EQ(0x000001b3u, ImmutableString("log2(30B").mangledNameHash());
ASSERT_EQ(0x000001d4u, ImmutableString("sqrt(00B").mangledNameHash());
ASSERT_EQ(0x000000b8u, ImmutableString("sqrt(10B").mangledNameHash());
ASSERT_EQ(0x0000007eu, ImmutableString("sqrt(20B").mangledNameHash());
- ASSERT_EQ(0x00000307u, ImmutableString("sqrt(30B").mangledNameHash());
+ ASSERT_EQ(0x00000308u, ImmutableString("sqrt(30B").mangledNameHash());
ASSERT_EQ(0x0000004cu, ImmutableString("inversesqrt(00B").mangledNameHash());
- ASSERT_EQ(0x000002e4u, ImmutableString("inversesqrt(10B").mangledNameHash());
- ASSERT_EQ(0x0000023eu, ImmutableString("inversesqrt(20B").mangledNameHash());
+ ASSERT_EQ(0x000002e5u, ImmutableString("inversesqrt(10B").mangledNameHash());
+ ASSERT_EQ(0x0000023fu, ImmutableString("inversesqrt(20B").mangledNameHash());
ASSERT_EQ(0x0000016eu, ImmutableString("inversesqrt(30B").mangledNameHash());
- ASSERT_EQ(0x00000280u, ImmutableString("abs(00B").mangledNameHash());
+ ASSERT_EQ(0x00000281u, ImmutableString("abs(00B").mangledNameHash());
ASSERT_EQ(0x00000165u, ImmutableString("abs(10B").mangledNameHash());
ASSERT_EQ(0x0000004bu, ImmutableString("abs(20B").mangledNameHash());
- ASSERT_EQ(0x000002eau, ImmutableString("abs(30B").mangledNameHash());
- ASSERT_EQ(0x0000027fu, ImmutableString("abs(00D").mangledNameHash());
+ ASSERT_EQ(0x000002ebu, ImmutableString("abs(30B").mangledNameHash());
+ ASSERT_EQ(0x00000280u, ImmutableString("abs(00D").mangledNameHash());
ASSERT_EQ(0x00000164u, ImmutableString("abs(10D").mangledNameHash());
ASSERT_EQ(0x0000004au, ImmutableString("abs(20D").mangledNameHash());
- ASSERT_EQ(0x000002e7u, ImmutableString("abs(30D").mangledNameHash());
- ASSERT_EQ(0x0000029bu, ImmutableString("sign(00B").mangledNameHash());
- ASSERT_EQ(0x0000038cu, ImmutableString("sign(10B").mangledNameHash());
+ ASSERT_EQ(0x000002e8u, ImmutableString("abs(30D").mangledNameHash());
+ ASSERT_EQ(0x0000029cu, ImmutableString("sign(00B").mangledNameHash());
+ ASSERT_EQ(0x0000038du, ImmutableString("sign(10B").mangledNameHash());
ASSERT_EQ(0x0000007fu, ImmutableString("sign(20B").mangledNameHash());
ASSERT_EQ(0x0000018bu, ImmutableString("sign(30B").mangledNameHash());
- ASSERT_EQ(0x0000029eu, ImmutableString("sign(00D").mangledNameHash());
- ASSERT_EQ(0x00000309u, ImmutableString("sign(10D").mangledNameHash());
+ ASSERT_EQ(0x0000029fu, ImmutableString("sign(00D").mangledNameHash());
+ ASSERT_EQ(0x0000030au, ImmutableString("sign(10D").mangledNameHash());
ASSERT_EQ(0x00000081u, ImmutableString("sign(20D").mangledNameHash());
ASSERT_EQ(0x0000018cu, ImmutableString("sign(30D").mangledNameHash());
- ASSERT_EQ(0x000003a3u, ImmutableString("floor(00B").mangledNameHash());
- ASSERT_EQ(0x00000202u, ImmutableString("floor(10B").mangledNameHash());
- ASSERT_EQ(0x0000021eu, ImmutableString("floor(20B").mangledNameHash());
+ ASSERT_EQ(0x000003a4u, ImmutableString("floor(00B").mangledNameHash());
+ ASSERT_EQ(0x00000203u, ImmutableString("floor(10B").mangledNameHash());
+ ASSERT_EQ(0x0000021fu, ImmutableString("floor(20B").mangledNameHash());
ASSERT_EQ(0x00000110u, ImmutableString("floor(30B").mangledNameHash());
ASSERT_EQ(0x000000ebu, ImmutableString("trunc(00B").mangledNameHash());
- ASSERT_EQ(0x0000037au, ImmutableString("trunc(10B").mangledNameHash());
- ASSERT_EQ(0x00000343u, ImmutableString("trunc(20B").mangledNameHash());
+ ASSERT_EQ(0x0000037bu, ImmutableString("trunc(10B").mangledNameHash());
+ ASSERT_EQ(0x00000344u, ImmutableString("trunc(20B").mangledNameHash());
ASSERT_EQ(0x000001f9u, ImmutableString("trunc(30B").mangledNameHash());
ASSERT_EQ(0x000000d0u, ImmutableString("round(00B").mangledNameHash());
- ASSERT_EQ(0x00000363u, ImmutableString("round(10B").mangledNameHash());
- ASSERT_EQ(0x00000226u, ImmutableString("round(20B").mangledNameHash());
+ ASSERT_EQ(0x00000364u, ImmutableString("round(10B").mangledNameHash());
+ ASSERT_EQ(0x00000227u, ImmutableString("round(20B").mangledNameHash());
ASSERT_EQ(0x0000010cu, ImmutableString("round(30B").mangledNameHash());
- ASSERT_EQ(0x000002c8u, ImmutableString("roundEven(00B").mangledNameHash());
+ ASSERT_EQ(0x000002c9u, ImmutableString("roundEven(00B").mangledNameHash());
ASSERT_EQ(0x00000191u, ImmutableString("roundEven(10B").mangledNameHash());
ASSERT_EQ(0x0000013bu, ImmutableString("roundEven(20B").mangledNameHash());
ASSERT_EQ(0x0000001cu, ImmutableString("roundEven(30B").mangledNameHash());
- ASSERT_EQ(0x00000232u, ImmutableString("ceil(00B").mangledNameHash());
- ASSERT_EQ(0x00000325u, ImmutableString("ceil(10B").mangledNameHash());
+ ASSERT_EQ(0x00000233u, ImmutableString("ceil(00B").mangledNameHash());
+ ASSERT_EQ(0x00000326u, ImmutableString("ceil(10B").mangledNameHash());
ASSERT_EQ(0x00000098u, ImmutableString("ceil(20B").mangledNameHash());
ASSERT_EQ(0x0000014bu, ImmutableString("ceil(30B").mangledNameHash());
ASSERT_EQ(0x00000175u, ImmutableString("fract(00B").mangledNameHash());
ASSERT_EQ(0x00000061u, ImmutableString("fract(10B").mangledNameHash());
- ASSERT_EQ(0x000002e9u, ImmutableString("fract(20B").mangledNameHash());
+ ASSERT_EQ(0x000002eau, ImmutableString("fract(20B").mangledNameHash());
ASSERT_EQ(0x000001b6u, ImmutableString("fract(30B").mangledNameHash());
ASSERT_EQ(0x0000018eu, ImmutableString("mod(00B00B").mangledNameHash());
ASSERT_EQ(0x00000154u, ImmutableString("mod(10B00B").mangledNameHash());
ASSERT_EQ(0x000000b3u, ImmutableString("mod(20B00B").mangledNameHash());
ASSERT_EQ(0x0000019fu, ImmutableString("mod(30B00B").mangledNameHash());
- ASSERT_EQ(0x000002aau, ImmutableString("mod(10B10B").mangledNameHash());
- ASSERT_EQ(0x00000207u, ImmutableString("mod(20B20B").mangledNameHash());
+ ASSERT_EQ(0x000002abu, ImmutableString("mod(10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000208u, ImmutableString("mod(20B20B").mangledNameHash());
ASSERT_EQ(0x00000189u, ImmutableString("mod(30B30B").mangledNameHash());
ASSERT_EQ(0x000001d0u, ImmutableString("min(00B00B").mangledNameHash());
- ASSERT_EQ(0x00000319u, ImmutableString("min(10B00B").mangledNameHash());
+ ASSERT_EQ(0x0000031au, ImmutableString("min(10B00B").mangledNameHash());
ASSERT_EQ(0x000000aeu, ImmutableString("min(20B00B").mangledNameHash());
ASSERT_EQ(0x00000072u, ImmutableString("min(30B00B").mangledNameHash());
ASSERT_EQ(0x0000008bu, ImmutableString("min(10B10B").mangledNameHash());
- ASSERT_EQ(0x00000210u, ImmutableString("min(20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000211u, ImmutableString("min(20B20B").mangledNameHash());
ASSERT_EQ(0x0000005bu, ImmutableString("min(30B30B").mangledNameHash());
- ASSERT_EQ(0x00000340u, ImmutableString("min(00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000341u, ImmutableString("min(00D00D").mangledNameHash());
ASSERT_EQ(0x00000045u, ImmutableString("min(10D10D").mangledNameHash());
- ASSERT_EQ(0x00000270u, ImmutableString("min(20D20D").mangledNameHash());
- ASSERT_EQ(0x00000240u, ImmutableString("min(30D30D").mangledNameHash());
- ASSERT_EQ(0x000002c3u, ImmutableString("min(10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000271u, ImmutableString("min(20D20D").mangledNameHash());
+ ASSERT_EQ(0x00000241u, ImmutableString("min(30D30D").mangledNameHash());
+ ASSERT_EQ(0x000002c4u, ImmutableString("min(10D00D").mangledNameHash());
ASSERT_EQ(0x00000039u, ImmutableString("min(20D00D").mangledNameHash());
- ASSERT_EQ(0x0000038au, ImmutableString("min(30D00D").mangledNameHash());
- ASSERT_EQ(0x0000030cu, ImmutableString("min(00E00E").mangledNameHash());
- ASSERT_EQ(0x0000035cu, ImmutableString("min(10E10E").mangledNameHash());
+ ASSERT_EQ(0x0000038bu, ImmutableString("min(30D00D").mangledNameHash());
+ ASSERT_EQ(0x0000030du, ImmutableString("min(00E00E").mangledNameHash());
+ ASSERT_EQ(0x0000035du, ImmutableString("min(10E10E").mangledNameHash());
ASSERT_EQ(0x00000017u, ImmutableString("min(20E20E").mangledNameHash());
ASSERT_EQ(0x000001ccu, ImmutableString("min(30E30E").mangledNameHash());
ASSERT_EQ(0x000000cbu, ImmutableString("min(10E00E").mangledNameHash());
ASSERT_EQ(0x000001dau, ImmutableString("min(20E00E").mangledNameHash());
ASSERT_EQ(0x00000177u, ImmutableString("min(30E00E").mangledNameHash());
ASSERT_EQ(0x0000013au, ImmutableString("max(00B00B").mangledNameHash());
- ASSERT_EQ(0x00000251u, ImmutableString("max(10B00B").mangledNameHash());
+ ASSERT_EQ(0x00000252u, ImmutableString("max(10B00B").mangledNameHash());
ASSERT_EQ(0x00000032u, ImmutableString("max(20B00B").mangledNameHash());
- ASSERT_EQ(0x0000026fu, ImmutableString("max(30B00B").mangledNameHash());
- ASSERT_EQ(0x00000372u, ImmutableString("max(10B10B").mangledNameHash());
- ASSERT_EQ(0x00000290u, ImmutableString("max(20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000270u, ImmutableString("max(30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000373u, ImmutableString("max(10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000291u, ImmutableString("max(20B20B").mangledNameHash());
ASSERT_EQ(0x0000011cu, ImmutableString("max(30B30B").mangledNameHash());
ASSERT_EQ(0x00000149u, ImmutableString("max(00D00D").mangledNameHash());
- ASSERT_EQ(0x00000214u, ImmutableString("max(10D10D").mangledNameHash());
- ASSERT_EQ(0x00000212u, ImmutableString("max(20D20D").mangledNameHash());
- ASSERT_EQ(0x0000030du, ImmutableString("max(30D30D").mangledNameHash());
+ ASSERT_EQ(0x00000215u, ImmutableString("max(10D10D").mangledNameHash());
+ ASSERT_EQ(0x00000213u, ImmutableString("max(20D20D").mangledNameHash());
+ ASSERT_EQ(0x0000030eu, ImmutableString("max(30D30D").mangledNameHash());
ASSERT_EQ(0x0000010au, ImmutableString("max(10D00D").mangledNameHash());
ASSERT_EQ(0x000000bcu, ImmutableString("max(20D00D").mangledNameHash());
ASSERT_EQ(0x00000053u, ImmutableString("max(30D00D").mangledNameHash());
- ASSERT_EQ(0x0000038du, ImmutableString("max(00E00E").mangledNameHash());
+ ASSERT_EQ(0x0000038eu, ImmutableString("max(00E00E").mangledNameHash());
ASSERT_EQ(0x0000011bu, ImmutableString("max(10E10E").mangledNameHash());
ASSERT_EQ(0x0000015bu, ImmutableString("max(20E20E").mangledNameHash());
ASSERT_EQ(0x000001c3u, ImmutableString("max(30E30E").mangledNameHash());
ASSERT_EQ(0x000001e9u, ImmutableString("max(10E00E").mangledNameHash());
- ASSERT_EQ(0x000002c6u, ImmutableString("max(20E00E").mangledNameHash());
+ ASSERT_EQ(0x000002c7u, ImmutableString("max(20E00E").mangledNameHash());
ASSERT_EQ(0x00000143u, ImmutableString("max(30E00E").mangledNameHash());
ASSERT_EQ(0x00000171u, ImmutableString("clamp(00B00B00B").mangledNameHash());
- ASSERT_EQ(0x00000383u, ImmutableString("clamp(10B00B00B").mangledNameHash());
- ASSERT_EQ(0x0000027bu, ImmutableString("clamp(20B00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000384u, ImmutableString("clamp(10B00B00B").mangledNameHash());
+ ASSERT_EQ(0x0000027cu, ImmutableString("clamp(20B00B00B").mangledNameHash());
ASSERT_EQ(0x00000100u, ImmutableString("clamp(30B00B00B").mangledNameHash());
ASSERT_EQ(0x00000020u, ImmutableString("clamp(10B10B10B").mangledNameHash());
- ASSERT_EQ(0x0000033au, ImmutableString("clamp(20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000033bu, ImmutableString("clamp(20B20B20B").mangledNameHash());
ASSERT_EQ(0x00000033u, ImmutableString("clamp(30B30B30B").mangledNameHash());
ASSERT_EQ(0x0000010eu, ImmutableString("clamp(00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000002u, ImmutableString("clamp(10D00D00D").mangledNameHash());
- ASSERT_EQ(0x000002cdu, ImmutableString("clamp(20D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000382u, ImmutableString("clamp(30D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000002ceu, ImmutableString("clamp(20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000383u, ImmutableString("clamp(30D00D00D").mangledNameHash());
ASSERT_EQ(0x0000009au, ImmutableString("clamp(10D10D10D").mangledNameHash());
ASSERT_EQ(0x000001e6u, ImmutableString("clamp(20D20D20D").mangledNameHash());
- ASSERT_EQ(0x000002f1u, ImmutableString("clamp(30D30D30D").mangledNameHash());
+ ASSERT_EQ(0x000002f2u, ImmutableString("clamp(30D30D30D").mangledNameHash());
ASSERT_EQ(0x00000011u, ImmutableString("clamp(00E00E00E").mangledNameHash());
- ASSERT_EQ(0x000002ccu, ImmutableString("clamp(10E00E00E").mangledNameHash());
- ASSERT_EQ(0x000002f8u, ImmutableString("clamp(20E00E00E").mangledNameHash());
- ASSERT_EQ(0x00000230u, ImmutableString("clamp(30E00E00E").mangledNameHash());
+ ASSERT_EQ(0x000002cdu, ImmutableString("clamp(10E00E00E").mangledNameHash());
+ ASSERT_EQ(0x000002f9u, ImmutableString("clamp(20E00E00E").mangledNameHash());
+ ASSERT_EQ(0x00000231u, ImmutableString("clamp(30E00E00E").mangledNameHash());
ASSERT_EQ(0x0000011du, ImmutableString("clamp(10E10E10E").mangledNameHash());
ASSERT_EQ(0x000000bau, ImmutableString("clamp(20E20E20E").mangledNameHash());
ASSERT_EQ(0x000000a3u, ImmutableString("clamp(30E30E30E").mangledNameHash());
- ASSERT_EQ(0x00000220u, ImmutableString("mix(00B00B00B").mangledNameHash());
- ASSERT_EQ(0x000002efu, ImmutableString("mix(10B10B00B").mangledNameHash());
+ ASSERT_EQ(0x00000221u, ImmutableString("mix(00B00B00B").mangledNameHash());
+ ASSERT_EQ(0x000002f0u, ImmutableString("mix(10B10B00B").mangledNameHash());
ASSERT_EQ(0x0000001fu, ImmutableString("mix(20B20B00B").mangledNameHash());
- ASSERT_EQ(0x0000031au, ImmutableString("mix(30B30B00B").mangledNameHash());
+ ASSERT_EQ(0x0000031bu, ImmutableString("mix(30B30B00B").mangledNameHash());
ASSERT_EQ(0x000001afu, ImmutableString("mix(10B10B10B").mangledNameHash());
- ASSERT_EQ(0x0000024fu, ImmutableString("mix(20B20B20B").mangledNameHash());
- ASSERT_EQ(0x00000357u, ImmutableString("mix(30B30B30B").mangledNameHash());
+ ASSERT_EQ(0x00000250u, ImmutableString("mix(20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000358u, ImmutableString("mix(30B30B30B").mangledNameHash());
ASSERT_EQ(0x00000055u, ImmutableString("mix(00B00B00F").mangledNameHash());
ASSERT_EQ(0x000001aeu, ImmutableString("mix(10B10B10F").mangledNameHash());
- ASSERT_EQ(0x0000024cu, ImmutableString("mix(20B20B20F").mangledNameHash());
- ASSERT_EQ(0x000002fbu, ImmutableString("mix(30B30B30F").mangledNameHash());
+ ASSERT_EQ(0x0000024du, ImmutableString("mix(20B20B20F").mangledNameHash());
+ ASSERT_EQ(0x000002fcu, ImmutableString("mix(30B30B30F").mangledNameHash());
ASSERT_EQ(0x00000197u, ImmutableString("step(00B00B").mangledNameHash());
- ASSERT_EQ(0x00000271u, ImmutableString("step(10B10B").mangledNameHash());
- ASSERT_EQ(0x00000282u, ImmutableString("step(20B20B").mangledNameHash());
- ASSERT_EQ(0x00000273u, ImmutableString("step(30B30B").mangledNameHash());
+ ASSERT_EQ(0x00000272u, ImmutableString("step(10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000283u, ImmutableString("step(20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000274u, ImmutableString("step(30B30B").mangledNameHash());
ASSERT_EQ(0x00000079u, ImmutableString("step(00B10B").mangledNameHash());
ASSERT_EQ(0x00000024u, ImmutableString("step(00B20B").mangledNameHash());
- ASSERT_EQ(0x00000298u, ImmutableString("step(00B30B").mangledNameHash());
- ASSERT_EQ(0x00000332u, ImmutableString("smoothstep(00B00B00B").mangledNameHash());
- ASSERT_EQ(0x00000219u, ImmutableString("smoothstep(10B10B10B").mangledNameHash());
- ASSERT_EQ(0x00000390u, ImmutableString("smoothstep(20B20B20B").mangledNameHash());
- ASSERT_EQ(0x00000338u, ImmutableString("smoothstep(30B30B30B").mangledNameHash());
+ ASSERT_EQ(0x00000299u, ImmutableString("step(00B30B").mangledNameHash());
+ ASSERT_EQ(0x00000333u, ImmutableString("smoothstep(00B00B00B").mangledNameHash());
+ ASSERT_EQ(0x0000021au, ImmutableString("smoothstep(10B10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000391u, ImmutableString("smoothstep(20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000339u, ImmutableString("smoothstep(30B30B30B").mangledNameHash());
ASSERT_EQ(0x000001eau, ImmutableString("smoothstep(00B00B10B").mangledNameHash());
ASSERT_EQ(0x000000d1u, ImmutableString("smoothstep(00B00B20B").mangledNameHash());
- ASSERT_EQ(0x00000314u, ImmutableString("smoothstep(00B00B30B").mangledNameHash());
+ ASSERT_EQ(0x00000315u, ImmutableString("smoothstep(00B00B30B").mangledNameHash());
ASSERT_EQ(0x00000005u, ImmutableString("modf(00B00B").mangledNameHash());
ASSERT_EQ(0x00000071u, ImmutableString("modf(10B10B").mangledNameHash());
- ASSERT_EQ(0x00000239u, ImmutableString("modf(20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000023au, ImmutableString("modf(20B20B").mangledNameHash());
ASSERT_EQ(0x00000138u, ImmutableString("modf(30B30B").mangledNameHash());
- ASSERT_EQ(0x0000022cu, ImmutableString("isnan(00B").mangledNameHash());
- ASSERT_EQ(0x00000370u, ImmutableString("isnan(10B").mangledNameHash());
+ ASSERT_EQ(0x0000022du, ImmutableString("isnan(00B").mangledNameHash());
+ ASSERT_EQ(0x00000371u, ImmutableString("isnan(10B").mangledNameHash());
ASSERT_EQ(0x00000139u, ImmutableString("isnan(20B").mangledNameHash());
ASSERT_EQ(0x000001c4u, ImmutableString("isnan(30B").mangledNameHash());
ASSERT_EQ(0x0000019au, ImmutableString("isinf(00B").mangledNameHash());
- ASSERT_EQ(0x000002cfu, ImmutableString("isinf(10B").mangledNameHash());
- ASSERT_EQ(0x00000355u, ImmutableString("isinf(20B").mangledNameHash());
+ ASSERT_EQ(0x000002d0u, ImmutableString("isinf(10B").mangledNameHash());
+ ASSERT_EQ(0x00000356u, ImmutableString("isinf(20B").mangledNameHash());
ASSERT_EQ(0x000000c1u, ImmutableString("isinf(30B").mangledNameHash());
- ASSERT_EQ(0x0000038bu, ImmutableString("floatBitsToInt(00B").mangledNameHash());
- ASSERT_EQ(0x00000250u, ImmutableString("floatBitsToInt(10B").mangledNameHash());
- ASSERT_EQ(0x00000315u, ImmutableString("floatBitsToInt(20B").mangledNameHash());
+ ASSERT_EQ(0x0000038cu, ImmutableString("floatBitsToInt(00B").mangledNameHash());
+ ASSERT_EQ(0x00000251u, ImmutableString("floatBitsToInt(10B").mangledNameHash());
+ ASSERT_EQ(0x00000316u, ImmutableString("floatBitsToInt(20B").mangledNameHash());
ASSERT_EQ(0x00000140u, ImmutableString("floatBitsToInt(30B").mangledNameHash());
- ASSERT_EQ(0x00000395u, ImmutableString("floatBitsToUint(00B").mangledNameHash());
+ ASSERT_EQ(0x00000396u, ImmutableString("floatBitsToUint(00B").mangledNameHash());
ASSERT_EQ(0x000000b6u, ImmutableString("floatBitsToUint(10B").mangledNameHash());
ASSERT_EQ(0x00000041u, ImmutableString("floatBitsToUint(20B").mangledNameHash());
- ASSERT_EQ(0x0000025du, ImmutableString("floatBitsToUint(30B").mangledNameHash());
+ ASSERT_EQ(0x0000025eu, ImmutableString("floatBitsToUint(30B").mangledNameHash());
ASSERT_EQ(0x00000063u, ImmutableString("intBitsToFloat(00D").mangledNameHash());
ASSERT_EQ(0x000001a7u, ImmutableString("intBitsToFloat(10D").mangledNameHash());
ASSERT_EQ(0x00000174u, ImmutableString("intBitsToFloat(20D").mangledNameHash());
ASSERT_EQ(0x00000058u, ImmutableString("intBitsToFloat(30D").mangledNameHash());
ASSERT_EQ(0x0000003bu, ImmutableString("uintBitsToFloat(00E").mangledNameHash());
ASSERT_EQ(0x00000155u, ImmutableString("uintBitsToFloat(10E").mangledNameHash());
- ASSERT_EQ(0x000002a6u, ImmutableString("uintBitsToFloat(20E").mangledNameHash());
+ ASSERT_EQ(0x000002a7u, ImmutableString("uintBitsToFloat(20E").mangledNameHash());
ASSERT_EQ(0x00000026u, ImmutableString("uintBitsToFloat(30E").mangledNameHash());
ASSERT_EQ(0x00000093u, ImmutableString("frexp(00B00D").mangledNameHash());
ASSERT_EQ(0x000001e8u, ImmutableString("frexp(10B10D").mangledNameHash());
ASSERT_EQ(0x00000173u, ImmutableString("frexp(20B20D").mangledNameHash());
ASSERT_EQ(0x000001cau, ImmutableString("frexp(30B30D").mangledNameHash());
ASSERT_EQ(0x00000013u, ImmutableString("ldexp(00B00D").mangledNameHash());
- ASSERT_EQ(0x00000318u, ImmutableString("ldexp(10B10D").mangledNameHash());
- ASSERT_EQ(0x00000350u, ImmutableString("ldexp(20B20D").mangledNameHash());
- ASSERT_EQ(0x0000026eu, ImmutableString("ldexp(30B30D").mangledNameHash());
- ASSERT_EQ(0x0000025cu, ImmutableString("packSnorm2x16(10B").mangledNameHash());
- ASSERT_EQ(0x000002d4u, ImmutableString("packHalf2x16(10B").mangledNameHash());
+ ASSERT_EQ(0x00000319u, ImmutableString("ldexp(10B10D").mangledNameHash());
+ ASSERT_EQ(0x00000351u, ImmutableString("ldexp(20B20D").mangledNameHash());
+ ASSERT_EQ(0x0000026fu, ImmutableString("ldexp(30B30D").mangledNameHash());
+ ASSERT_EQ(0x0000025du, ImmutableString("packSnorm2x16(10B").mangledNameHash());
+ ASSERT_EQ(0x000002d5u, ImmutableString("packHalf2x16(10B").mangledNameHash());
ASSERT_EQ(0x000001efu, ImmutableString("unpackSnorm2x16(00E").mangledNameHash());
ASSERT_EQ(0x00000103u, ImmutableString("unpackHalf2x16(00E").mangledNameHash());
- ASSERT_EQ(0x000002afu, ImmutableString("packUnorm2x16(10B").mangledNameHash());
+ ASSERT_EQ(0x000002b0u, ImmutableString("packUnorm2x16(10B").mangledNameHash());
ASSERT_EQ(0x0000007cu, ImmutableString("unpackUnorm2x16(00E").mangledNameHash());
ASSERT_EQ(0x00000091u, ImmutableString("packUnorm4x8(30B").mangledNameHash());
- ASSERT_EQ(0x000002eeu, ImmutableString("packSnorm4x8(30B").mangledNameHash());
- ASSERT_EQ(0x000002a7u, ImmutableString("unpackUnorm4x8(00E").mangledNameHash());
+ ASSERT_EQ(0x000002efu, ImmutableString("packSnorm4x8(30B").mangledNameHash());
+ ASSERT_EQ(0x000002a8u, ImmutableString("unpackUnorm4x8(00E").mangledNameHash());
ASSERT_EQ(0x00000132u, ImmutableString("unpackSnorm4x8(00E").mangledNameHash());
ASSERT_EQ(0x000001fbu, ImmutableString("length(00B").mangledNameHash());
ASSERT_EQ(0x000000edu, ImmutableString("length(10B").mangledNameHash());
- ASSERT_EQ(0x0000037eu, ImmutableString("length(20B").mangledNameHash());
- ASSERT_EQ(0x00000248u, ImmutableString("length(30B").mangledNameHash());
- ASSERT_EQ(0x00000234u, ImmutableString("distance(00B00B").mangledNameHash());
+ ASSERT_EQ(0x0000037fu, ImmutableString("length(20B").mangledNameHash());
+ ASSERT_EQ(0x00000249u, ImmutableString("length(30B").mangledNameHash());
+ ASSERT_EQ(0x00000235u, ImmutableString("distance(00B00B").mangledNameHash());
ASSERT_EQ(0x00000152u, ImmutableString("distance(10B10B").mangledNameHash());
ASSERT_EQ(0x0000019cu, ImmutableString("distance(20B20B").mangledNameHash());
ASSERT_EQ(0x000000e7u, ImmutableString("distance(30B30B").mangledNameHash());
ASSERT_EQ(0x000000f0u, ImmutableString("dot(00B00B").mangledNameHash());
ASSERT_EQ(0x00000102u, ImmutableString("dot(10B10B").mangledNameHash());
- ASSERT_EQ(0x0000032bu, ImmutableString("dot(20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000032cu, ImmutableString("dot(20B20B").mangledNameHash());
ASSERT_EQ(0x000000f2u, ImmutableString("dot(30B30B").mangledNameHash());
- ASSERT_EQ(0x00000279u, ImmutableString("cross(20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000027au, ImmutableString("cross(20B20B").mangledNameHash());
ASSERT_EQ(0x000000a7u, ImmutableString("normalize(00B").mangledNameHash());
ASSERT_EQ(0x000001eeu, ImmutableString("normalize(10B").mangledNameHash());
ASSERT_EQ(0x000001d5u, ImmutableString("normalize(20B").mangledNameHash());
- ASSERT_EQ(0x00000337u, ImmutableString("normalize(30B").mangledNameHash());
- ASSERT_EQ(0x000002b0u, ImmutableString("faceforward(00B00B00B").mangledNameHash());
- ASSERT_EQ(0x000002bbu, ImmutableString("faceforward(10B10B10B").mangledNameHash());
- ASSERT_EQ(0x00000286u, ImmutableString("faceforward(20B20B20B").mangledNameHash());
- ASSERT_EQ(0x0000022eu, ImmutableString("faceforward(30B30B30B").mangledNameHash());
+ ASSERT_EQ(0x00000338u, ImmutableString("normalize(30B").mangledNameHash());
+ ASSERT_EQ(0x000002b1u, ImmutableString("faceforward(00B00B00B").mangledNameHash());
+ ASSERT_EQ(0x000002bcu, ImmutableString("faceforward(10B10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000287u, ImmutableString("faceforward(20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000022fu, ImmutableString("faceforward(30B30B30B").mangledNameHash());
ASSERT_EQ(0x000000b2u, ImmutableString("reflect(00B00B").mangledNameHash());
ASSERT_EQ(0x000000b5u, ImmutableString("reflect(10B10B").mangledNameHash());
ASSERT_EQ(0x00000153u, ImmutableString("reflect(20B20B").mangledNameHash());
@@ -313,327 +313,327 @@
ASSERT_EQ(0x000001abu, ImmutableString("refract(00B00B00B").mangledNameHash());
ASSERT_EQ(0x000000d9u, ImmutableString("refract(10B10B00B").mangledNameHash());
ASSERT_EQ(0x000001a9u, ImmutableString("refract(20B20B00B").mangledNameHash());
- ASSERT_EQ(0x0000021cu, ImmutableString("refract(30B30B00B").mangledNameHash());
- ASSERT_EQ(0x00000367u, ImmutableString("matrixCompMult(50B50B").mangledNameHash());
+ ASSERT_EQ(0x0000021du, ImmutableString("refract(30B30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000368u, ImmutableString("matrixCompMult(50B50B").mangledNameHash());
ASSERT_EQ(0x00000104u, ImmutableString("matrixCompMult(A0BA0B").mangledNameHash());
- ASSERT_EQ(0x0000027eu, ImmutableString("matrixCompMult(F0BF0B").mangledNameHash());
- ASSERT_EQ(0x00000227u, ImmutableString("matrixCompMult(90B90B").mangledNameHash());
+ ASSERT_EQ(0x0000027fu, ImmutableString("matrixCompMult(F0BF0B").mangledNameHash());
+ ASSERT_EQ(0x00000228u, ImmutableString("matrixCompMult(90B90B").mangledNameHash());
ASSERT_EQ(0x000001ecu, ImmutableString("matrixCompMult(60B60B").mangledNameHash());
ASSERT_EQ(0x0000004du, ImmutableString("matrixCompMult(D0BD0B").mangledNameHash());
ASSERT_EQ(0x0000015cu, ImmutableString("matrixCompMult(70B70B").mangledNameHash());
ASSERT_EQ(0x000001fau, ImmutableString("matrixCompMult(E0BE0B").mangledNameHash());
- ASSERT_EQ(0x00000277u, ImmutableString("matrixCompMult(B0BB0B").mangledNameHash());
- ASSERT_EQ(0x00000341u, ImmutableString("outerProduct(10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000278u, ImmutableString("matrixCompMult(B0BB0B").mangledNameHash());
+ ASSERT_EQ(0x00000342u, ImmutableString("outerProduct(10B10B").mangledNameHash());
ASSERT_EQ(0x00000130u, ImmutableString("outerProduct(20B20B").mangledNameHash());
- ASSERT_EQ(0x00000292u, ImmutableString("outerProduct(30B30B").mangledNameHash());
+ ASSERT_EQ(0x00000293u, ImmutableString("outerProduct(30B30B").mangledNameHash());
ASSERT_EQ(0x00000184u, ImmutableString("outerProduct(20B10B").mangledNameHash());
ASSERT_EQ(0x000000fcu, ImmutableString("outerProduct(10B20B").mangledNameHash());
ASSERT_EQ(0x0000013fu, ImmutableString("outerProduct(30B10B").mangledNameHash());
- ASSERT_EQ(0x0000020bu, ImmutableString("outerProduct(10B30B").mangledNameHash());
+ ASSERT_EQ(0x0000020cu, ImmutableString("outerProduct(10B30B").mangledNameHash());
ASSERT_EQ(0x00000181u, ImmutableString("outerProduct(30B20B").mangledNameHash());
ASSERT_EQ(0x00000019u, ImmutableString("outerProduct(20B30B").mangledNameHash());
ASSERT_EQ(0x00000012u, ImmutableString("transpose(50B").mangledNameHash());
- ASSERT_EQ(0x000002fdu, ImmutableString("transpose(A0B").mangledNameHash());
+ ASSERT_EQ(0x000002feu, ImmutableString("transpose(A0B").mangledNameHash());
ASSERT_EQ(0x0000009du, ImmutableString("transpose(F0B").mangledNameHash());
- ASSERT_EQ(0x000002a0u, ImmutableString("transpose(60B").mangledNameHash());
- ASSERT_EQ(0x0000032cu, ImmutableString("transpose(90B").mangledNameHash());
+ ASSERT_EQ(0x000002a1u, ImmutableString("transpose(60B").mangledNameHash());
+ ASSERT_EQ(0x0000032du, ImmutableString("transpose(90B").mangledNameHash());
ASSERT_EQ(0x0000002au, ImmutableString("transpose(70B").mangledNameHash());
ASSERT_EQ(0x000001b2u, ImmutableString("transpose(D0B").mangledNameHash());
- ASSERT_EQ(0x00000311u, ImmutableString("transpose(B0B").mangledNameHash());
+ ASSERT_EQ(0x00000312u, ImmutableString("transpose(B0B").mangledNameHash());
ASSERT_EQ(0x00000062u, ImmutableString("transpose(E0B").mangledNameHash());
ASSERT_EQ(0x00000073u, ImmutableString("determinant(50B").mangledNameHash());
ASSERT_EQ(0x0000000bu, ImmutableString("determinant(A0B").mangledNameHash());
- ASSERT_EQ(0x000002fcu, ImmutableString("determinant(F0B").mangledNameHash());
+ ASSERT_EQ(0x000002fdu, ImmutableString("determinant(F0B").mangledNameHash());
ASSERT_EQ(0x00000101u, ImmutableString("inverse(50B").mangledNameHash());
ASSERT_EQ(0x000001c0u, ImmutableString("inverse(A0B").mangledNameHash());
ASSERT_EQ(0x000001d9u, ImmutableString("inverse(F0B").mangledNameHash());
- ASSERT_EQ(0x000002ebu, ImmutableString("lessThan(10B10B").mangledNameHash());
+ ASSERT_EQ(0x000002ecu, ImmutableString("lessThan(10B10B").mangledNameHash());
ASSERT_EQ(0x00000074u, ImmutableString("lessThan(20B20B").mangledNameHash());
ASSERT_EQ(0x000000c3u, ImmutableString("lessThan(30B30B").mangledNameHash());
ASSERT_EQ(0x00000124u, ImmutableString("lessThan(10D10D").mangledNameHash());
ASSERT_EQ(0x000000b4u, ImmutableString("lessThan(20D20D").mangledNameHash());
ASSERT_EQ(0x000001f1u, ImmutableString("lessThan(30D30D").mangledNameHash());
ASSERT_EQ(0x00000097u, ImmutableString("lessThan(10E10E").mangledNameHash());
- ASSERT_EQ(0x00000278u, ImmutableString("lessThan(20E20E").mangledNameHash());
+ ASSERT_EQ(0x00000279u, ImmutableString("lessThan(20E20E").mangledNameHash());
ASSERT_EQ(0x00000025u, ImmutableString("lessThan(30E30E").mangledNameHash());
ASSERT_EQ(0x0000004eu, ImmutableString("lessThanEqual(10B10B").mangledNameHash());
ASSERT_EQ(0x0000003cu, ImmutableString("lessThanEqual(20B20B").mangledNameHash());
ASSERT_EQ(0x00000015u, ImmutableString("lessThanEqual(30B30B").mangledNameHash());
- ASSERT_EQ(0x00000342u, ImmutableString("lessThanEqual(10D10D").mangledNameHash());
- ASSERT_EQ(0x00000303u, ImmutableString("lessThanEqual(20D20D").mangledNameHash());
- ASSERT_EQ(0x0000025eu, ImmutableString("lessThanEqual(30D30D").mangledNameHash());
- ASSERT_EQ(0x0000023du, ImmutableString("lessThanEqual(10E10E").mangledNameHash());
- ASSERT_EQ(0x00000293u, ImmutableString("lessThanEqual(20E20E").mangledNameHash());
+ ASSERT_EQ(0x00000343u, ImmutableString("lessThanEqual(10D10D").mangledNameHash());
+ ASSERT_EQ(0x00000304u, ImmutableString("lessThanEqual(20D20D").mangledNameHash());
+ ASSERT_EQ(0x0000025fu, ImmutableString("lessThanEqual(30D30D").mangledNameHash());
+ ASSERT_EQ(0x0000023eu, ImmutableString("lessThanEqual(10E10E").mangledNameHash());
+ ASSERT_EQ(0x00000294u, ImmutableString("lessThanEqual(20E20E").mangledNameHash());
ASSERT_EQ(0x000000c9u, ImmutableString("lessThanEqual(30E30E").mangledNameHash());
- ASSERT_EQ(0x00000377u, ImmutableString("greaterThan(10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000378u, ImmutableString("greaterThan(10B10B").mangledNameHash());
ASSERT_EQ(0x00000069u, ImmutableString("greaterThan(20B20B").mangledNameHash());
ASSERT_EQ(0x000000eau, ImmutableString("greaterThan(30B30B").mangledNameHash());
ASSERT_EQ(0x000000dcu, ImmutableString("greaterThan(10D10D").mangledNameHash());
ASSERT_EQ(0x000000e8u, ImmutableString("greaterThan(20D20D").mangledNameHash());
ASSERT_EQ(0x000000dbu, ImmutableString("greaterThan(30D30D").mangledNameHash());
- ASSERT_EQ(0x00000387u, ImmutableString("greaterThan(10E10E").mangledNameHash());
+ ASSERT_EQ(0x00000388u, ImmutableString("greaterThan(10E10E").mangledNameHash());
ASSERT_EQ(0x000001a4u, ImmutableString("greaterThan(20E20E").mangledNameHash());
ASSERT_EQ(0x000001e7u, ImmutableString("greaterThan(30E30E").mangledNameHash());
- ASSERT_EQ(0x00000328u, ImmutableString("greaterThanEqual(10B10B").mangledNameHash());
- ASSERT_EQ(0x00000222u, ImmutableString("greaterThanEqual(20B20B").mangledNameHash());
- ASSERT_EQ(0x000002dau, ImmutableString("greaterThanEqual(30B30B").mangledNameHash());
+ ASSERT_EQ(0x00000329u, ImmutableString("greaterThanEqual(10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000223u, ImmutableString("greaterThanEqual(20B20B").mangledNameHash());
+ ASSERT_EQ(0x000002dbu, ImmutableString("greaterThanEqual(30B30B").mangledNameHash());
ASSERT_EQ(0x0000015fu, ImmutableString("greaterThanEqual(10D10D").mangledNameHash());
ASSERT_EQ(0x00000016u, ImmutableString("greaterThanEqual(20D20D").mangledNameHash());
- ASSERT_EQ(0x00000351u, ImmutableString("greaterThanEqual(30D30D").mangledNameHash());
- ASSERT_EQ(0x00000263u, ImmutableString("greaterThanEqual(10E10E").mangledNameHash());
+ ASSERT_EQ(0x00000352u, ImmutableString("greaterThanEqual(30D30D").mangledNameHash());
+ ASSERT_EQ(0x00000264u, ImmutableString("greaterThanEqual(10E10E").mangledNameHash());
ASSERT_EQ(0x00000123u, ImmutableString("greaterThanEqual(20E20E").mangledNameHash());
- ASSERT_EQ(0x00000249u, ImmutableString("greaterThanEqual(30E30E").mangledNameHash());
- ASSERT_EQ(0x0000036du, ImmutableString("equal(10B10B").mangledNameHash());
+ ASSERT_EQ(0x0000024au, ImmutableString("greaterThanEqual(30E30E").mangledNameHash());
+ ASSERT_EQ(0x0000036eu, ImmutableString("equal(10B10B").mangledNameHash());
ASSERT_EQ(0x00000179u, ImmutableString("equal(20B20B").mangledNameHash());
- ASSERT_EQ(0x0000036au, ImmutableString("equal(30B30B").mangledNameHash());
+ ASSERT_EQ(0x0000036bu, ImmutableString("equal(30B30B").mangledNameHash());
ASSERT_EQ(0x00000052u, ImmutableString("equal(10D10D").mangledNameHash());
- ASSERT_EQ(0x000002b8u, ImmutableString("equal(20D20D").mangledNameHash());
- ASSERT_EQ(0x0000025au, ImmutableString("equal(30D30D").mangledNameHash());
- ASSERT_EQ(0x0000035bu, ImmutableString("equal(10E10E").mangledNameHash());
- ASSERT_EQ(0x0000021fu, ImmutableString("equal(20E20E").mangledNameHash());
- ASSERT_EQ(0x0000029au, ImmutableString("equal(30E30E").mangledNameHash());
+ ASSERT_EQ(0x000002b9u, ImmutableString("equal(20D20D").mangledNameHash());
+ ASSERT_EQ(0x0000025bu, ImmutableString("equal(30D30D").mangledNameHash());
+ ASSERT_EQ(0x0000035cu, ImmutableString("equal(10E10E").mangledNameHash());
+ ASSERT_EQ(0x00000220u, ImmutableString("equal(20E20E").mangledNameHash());
+ ASSERT_EQ(0x0000029bu, ImmutableString("equal(30E30E").mangledNameHash());
ASSERT_EQ(0x00000157u, ImmutableString("equal(10F10F").mangledNameHash());
- ASSERT_EQ(0x00000368u, ImmutableString("equal(20F20F").mangledNameHash());
- ASSERT_EQ(0x000002deu, ImmutableString("equal(30F30F").mangledNameHash());
+ ASSERT_EQ(0x00000369u, ImmutableString("equal(20F20F").mangledNameHash());
+ ASSERT_EQ(0x000002dfu, ImmutableString("equal(30F30F").mangledNameHash());
ASSERT_EQ(0x000001f5u, ImmutableString("notEqual(10B10B").mangledNameHash());
- ASSERT_EQ(0x00000352u, ImmutableString("notEqual(20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000353u, ImmutableString("notEqual(20B20B").mangledNameHash());
ASSERT_EQ(0x00000190u, ImmutableString("notEqual(30B30B").mangledNameHash());
- ASSERT_EQ(0x000002acu, ImmutableString("notEqual(10D10D").mangledNameHash());
+ ASSERT_EQ(0x000002adu, ImmutableString("notEqual(10D10D").mangledNameHash());
ASSERT_EQ(0x00000007u, ImmutableString("notEqual(20D20D").mangledNameHash());
ASSERT_EQ(0x000000d8u, ImmutableString("notEqual(30D30D").mangledNameHash());
- ASSERT_EQ(0x00000365u, ImmutableString("notEqual(10E10E").mangledNameHash());
+ ASSERT_EQ(0x00000366u, ImmutableString("notEqual(10E10E").mangledNameHash());
ASSERT_EQ(0x000001beu, ImmutableString("notEqual(20E20E").mangledNameHash());
- ASSERT_EQ(0x0000023bu, ImmutableString("notEqual(30E30E").mangledNameHash());
- ASSERT_EQ(0x0000032fu, ImmutableString("notEqual(10F10F").mangledNameHash());
+ ASSERT_EQ(0x0000023cu, ImmutableString("notEqual(30E30E").mangledNameHash());
+ ASSERT_EQ(0x00000330u, ImmutableString("notEqual(10F10F").mangledNameHash());
ASSERT_EQ(0x00000188u, ImmutableString("notEqual(20F20F").mangledNameHash());
- ASSERT_EQ(0x000002e1u, ImmutableString("notEqual(30F30F").mangledNameHash());
- ASSERT_EQ(0x00000254u, ImmutableString("any(10F").mangledNameHash());
+ ASSERT_EQ(0x000002e2u, ImmutableString("notEqual(30F30F").mangledNameHash());
+ ASSERT_EQ(0x00000255u, ImmutableString("any(10F").mangledNameHash());
ASSERT_EQ(0x000001fcu, ImmutableString("any(20F").mangledNameHash());
ASSERT_EQ(0x000000e6u, ImmutableString("any(30F").mangledNameHash());
- ASSERT_EQ(0x0000027au, ImmutableString("all(10F").mangledNameHash());
- ASSERT_EQ(0x000002ceu, ImmutableString("all(20F").mangledNameHash());
+ ASSERT_EQ(0x0000027bu, ImmutableString("all(10F").mangledNameHash());
+ ASSERT_EQ(0x000002cfu, ImmutableString("all(20F").mangledNameHash());
ASSERT_EQ(0x00000049u, ImmutableString("all(30F").mangledNameHash());
ASSERT_EQ(0x00000095u, ImmutableString("not(10F").mangledNameHash());
ASSERT_EQ(0x00000129u, ImmutableString("not(20F").mangledNameHash());
- ASSERT_EQ(0x0000032du, ImmutableString("not(30F").mangledNameHash());
- ASSERT_EQ(0x000002dfu, ImmutableString("bitfieldExtract(00D00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000032eu, ImmutableString("not(30F").mangledNameHash());
+ ASSERT_EQ(0x000002e0u, ImmutableString("bitfieldExtract(00D00D00D").mangledNameHash());
ASSERT_EQ(0x0000018au, ImmutableString("bitfieldExtract(10D00D00D").mangledNameHash());
ASSERT_EQ(0x000001f3u, ImmutableString("bitfieldExtract(20D00D00D").mangledNameHash());
- ASSERT_EQ(0x000002c2u, ImmutableString("bitfieldExtract(30D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000002c3u, ImmutableString("bitfieldExtract(30D00D00D").mangledNameHash());
ASSERT_EQ(0x000001f7u, ImmutableString("bitfieldExtract(00E00D00D").mangledNameHash());
ASSERT_EQ(0x000000dfu, ImmutableString("bitfieldExtract(10E00D00D").mangledNameHash());
- ASSERT_EQ(0x000002a5u, ImmutableString("bitfieldExtract(20E00D00D").mangledNameHash());
+ ASSERT_EQ(0x000002a6u, ImmutableString("bitfieldExtract(20E00D00D").mangledNameHash());
ASSERT_EQ(0x0000015du, ImmutableString("bitfieldExtract(30E00D00D").mangledNameHash());
ASSERT_EQ(0x0000001au, ImmutableString("bitfieldInsert(00D00D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000339u, ImmutableString("bitfieldInsert(10D10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000033au, ImmutableString("bitfieldInsert(10D10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000042u, ImmutableString("bitfieldInsert(20D20D00D00D").mangledNameHash());
ASSERT_EQ(0x000000d4u, ImmutableString("bitfieldInsert(30D30D00D00D").mangledNameHash());
ASSERT_EQ(0x00000067u, ImmutableString("bitfieldInsert(00E00E00D00D").mangledNameHash());
- ASSERT_EQ(0x000002edu, ImmutableString("bitfieldInsert(10E10E00D00D").mangledNameHash());
- ASSERT_EQ(0x0000021du, ImmutableString("bitfieldInsert(20E20E00D00D").mangledNameHash());
- ASSERT_EQ(0x0000037fu, ImmutableString("bitfieldInsert(30E30E00D00D").mangledNameHash());
+ ASSERT_EQ(0x000002eeu, ImmutableString("bitfieldInsert(10E10E00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000021eu, ImmutableString("bitfieldInsert(20E20E00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000380u, ImmutableString("bitfieldInsert(30E30E00D00D").mangledNameHash());
ASSERT_EQ(0x00000159u, ImmutableString("bitfieldReverse(00D").mangledNameHash());
- ASSERT_EQ(0x00000275u, ImmutableString("bitfieldReverse(10D").mangledNameHash());
+ ASSERT_EQ(0x00000276u, ImmutableString("bitfieldReverse(10D").mangledNameHash());
ASSERT_EQ(0x0000004fu, ImmutableString("bitfieldReverse(20D").mangledNameHash());
ASSERT_EQ(0x0000016du, ImmutableString("bitfieldReverse(30D").mangledNameHash());
ASSERT_EQ(0x0000015au, ImmutableString("bitfieldReverse(00E").mangledNameHash());
- ASSERT_EQ(0x00000274u, ImmutableString("bitfieldReverse(10E").mangledNameHash());
+ ASSERT_EQ(0x00000275u, ImmutableString("bitfieldReverse(10E").mangledNameHash());
ASSERT_EQ(0x00000050u, ImmutableString("bitfieldReverse(20E").mangledNameHash());
ASSERT_EQ(0x0000016cu, ImmutableString("bitfieldReverse(30E").mangledNameHash());
ASSERT_EQ(0x00000023u, ImmutableString("bitCount(00D").mangledNameHash());
- ASSERT_EQ(0x00000299u, ImmutableString("bitCount(10D").mangledNameHash());
+ ASSERT_EQ(0x0000029au, ImmutableString("bitCount(10D").mangledNameHash());
ASSERT_EQ(0x00000196u, ImmutableString("bitCount(20D").mangledNameHash());
ASSERT_EQ(0x0000007au, ImmutableString("bitCount(30D").mangledNameHash());
ASSERT_EQ(0x000000f3u, ImmutableString("bitCount(00E").mangledNameHash());
ASSERT_EQ(0x0000014eu, ImmutableString("bitCount(10E").mangledNameHash());
- ASSERT_EQ(0x000002b6u, ImmutableString("bitCount(20E").mangledNameHash());
+ ASSERT_EQ(0x000002b7u, ImmutableString("bitCount(20E").mangledNameHash());
ASSERT_EQ(0x00000133u, ImmutableString("bitCount(30E").mangledNameHash());
- ASSERT_EQ(0x000002d7u, ImmutableString("findLSB(00D").mangledNameHash());
+ ASSERT_EQ(0x000002d8u, ImmutableString("findLSB(00D").mangledNameHash());
ASSERT_EQ(0x000001acu, ImmutableString("findLSB(10D").mangledNameHash());
ASSERT_EQ(0x0000008fu, ImmutableString("findLSB(20D").mangledNameHash());
- ASSERT_EQ(0x000002b4u, ImmutableString("findLSB(30D").mangledNameHash());
- ASSERT_EQ(0x000002d6u, ImmutableString("findLSB(00E").mangledNameHash());
+ ASSERT_EQ(0x000002b5u, ImmutableString("findLSB(30D").mangledNameHash());
+ ASSERT_EQ(0x000002d7u, ImmutableString("findLSB(00E").mangledNameHash());
ASSERT_EQ(0x000001adu, ImmutableString("findLSB(10E").mangledNameHash());
ASSERT_EQ(0x0000008eu, ImmutableString("findLSB(20E").mangledNameHash());
- ASSERT_EQ(0x000002b5u, ImmutableString("findLSB(30E").mangledNameHash());
- ASSERT_EQ(0x000002a1u, ImmutableString("findMSB(00D").mangledNameHash());
+ ASSERT_EQ(0x000002b6u, ImmutableString("findLSB(30E").mangledNameHash());
+ ASSERT_EQ(0x000002a2u, ImmutableString("findMSB(00D").mangledNameHash());
ASSERT_EQ(0x000000efu, ImmutableString("findMSB(10D").mangledNameHash());
ASSERT_EQ(0x0000012bu, ImmutableString("findMSB(20D").mangledNameHash());
- ASSERT_EQ(0x00000246u, ImmutableString("findMSB(30D").mangledNameHash());
- ASSERT_EQ(0x000002a4u, ImmutableString("findMSB(00E").mangledNameHash());
+ ASSERT_EQ(0x00000247u, ImmutableString("findMSB(30D").mangledNameHash());
+ ASSERT_EQ(0x000002a5u, ImmutableString("findMSB(00E").mangledNameHash());
ASSERT_EQ(0x000000eeu, ImmutableString("findMSB(10E").mangledNameHash());
ASSERT_EQ(0x0000012cu, ImmutableString("findMSB(20E").mangledNameHash());
- ASSERT_EQ(0x00000245u, ImmutableString("findMSB(30E").mangledNameHash());
- ASSERT_EQ(0x00000223u, ImmutableString("uaddCarry(00E00E00E").mangledNameHash());
- ASSERT_EQ(0x0000034cu, ImmutableString("uaddCarry(10E10E10E").mangledNameHash());
- ASSERT_EQ(0x00000371u, ImmutableString("uaddCarry(20E20E20E").mangledNameHash());
+ ASSERT_EQ(0x00000246u, ImmutableString("findMSB(30E").mangledNameHash());
+ ASSERT_EQ(0x00000224u, ImmutableString("uaddCarry(00E00E00E").mangledNameHash());
+ ASSERT_EQ(0x0000034du, ImmutableString("uaddCarry(10E10E10E").mangledNameHash());
+ ASSERT_EQ(0x00000372u, ImmutableString("uaddCarry(20E20E20E").mangledNameHash());
ASSERT_EQ(0x0000019eu, ImmutableString("uaddCarry(30E30E30E").mangledNameHash());
ASSERT_EQ(0x000001c8u, ImmutableString("usubBorrow(00E00E00E").mangledNameHash());
- ASSERT_EQ(0x0000036cu, ImmutableString("usubBorrow(10E10E10E").mangledNameHash());
+ ASSERT_EQ(0x0000036du, ImmutableString("usubBorrow(10E10E10E").mangledNameHash());
ASSERT_EQ(0x000000f6u, ImmutableString("usubBorrow(20E20E20E").mangledNameHash());
- ASSERT_EQ(0x0000026bu, ImmutableString("usubBorrow(30E30E30E").mangledNameHash());
- ASSERT_EQ(0x0000030eu, ImmutableString("umulExtended(00E00E00E00E").mangledNameHash());
+ ASSERT_EQ(0x0000026cu, ImmutableString("usubBorrow(30E30E30E").mangledNameHash());
+ ASSERT_EQ(0x0000030fu, ImmutableString("umulExtended(00E00E00E00E").mangledNameHash());
ASSERT_EQ(0x00000185u, ImmutableString("umulExtended(10E10E10E10E").mangledNameHash());
- ASSERT_EQ(0x000002b1u, ImmutableString("umulExtended(20E20E20E20E").mangledNameHash());
- ASSERT_EQ(0x0000022du, ImmutableString("umulExtended(30E30E30E30E").mangledNameHash());
+ ASSERT_EQ(0x000002b2u, ImmutableString("umulExtended(20E20E20E20E").mangledNameHash());
+ ASSERT_EQ(0x0000022eu, ImmutableString("umulExtended(30E30E30E30E").mangledNameHash());
ASSERT_EQ(0x000001c5u, ImmutableString("imulExtended(00D00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000085u, ImmutableString("imulExtended(10D10D10D10D").mangledNameHash());
ASSERT_EQ(0x000000e5u, ImmutableString("imulExtended(20D20D20D20D").mangledNameHash());
ASSERT_EQ(0x00000027u, ImmutableString("imulExtended(30D30D30D30D").mangledNameHash());
ASSERT_EQ(0x00000094u, ImmutableString("texture2D(00I10B").mangledNameHash());
ASSERT_EQ(0x00000127u, ImmutableString("texture2DProj(00I20B").mangledNameHash());
- ASSERT_EQ(0x00000238u, ImmutableString("texture2DProj(00I30B").mangledNameHash());
- ASSERT_EQ(0x0000020cu, ImmutableString("textureCube(00K20B").mangledNameHash());
- ASSERT_EQ(0x0000033fu, ImmutableString("texture2D(00M10B").mangledNameHash());
- ASSERT_EQ(0x000002a8u, ImmutableString("texture2DProj(00M20B").mangledNameHash());
- ASSERT_EQ(0x000002adu, ImmutableString("texture2DProj(00M30B").mangledNameHash());
+ ASSERT_EQ(0x00000239u, ImmutableString("texture2DProj(00I30B").mangledNameHash());
+ ASSERT_EQ(0x0000020du, ImmutableString("textureCube(00K20B").mangledNameHash());
+ ASSERT_EQ(0x00000340u, ImmutableString("texture2D(00M10B").mangledNameHash());
+ ASSERT_EQ(0x000002a9u, ImmutableString("texture2DProj(00M20B").mangledNameHash());
+ ASSERT_EQ(0x000002aeu, ImmutableString("texture2DProj(00M30B").mangledNameHash());
ASSERT_EQ(0x000000e4u, ImmutableString("texture2DRect(00O10B").mangledNameHash());
- ASSERT_EQ(0x0000039cu, ImmutableString("texture2DRectProj(00O20B").mangledNameHash());
+ ASSERT_EQ(0x0000039du, ImmutableString("texture2DRectProj(00O20B").mangledNameHash());
ASSERT_EQ(0x00000107u, ImmutableString("texture2DRectProj(00O30B").mangledNameHash());
ASSERT_EQ(0x0000009cu, ImmutableString("texture(00O10B").mangledNameHash());
ASSERT_EQ(0x000000fau, ImmutableString("textureProj(00O20B").mangledNameHash());
- ASSERT_EQ(0x0000021au, ImmutableString("textureProj(00O30B").mangledNameHash());
+ ASSERT_EQ(0x0000021bu, ImmutableString("textureProj(00O30B").mangledNameHash());
ASSERT_EQ(0x00000066u, ImmutableString("texture2DGradEXT(00I10B10B10B").mangledNameHash());
- ASSERT_EQ(0x000002ffu, ImmutableString("texture2DProjGradEXT(00I20B10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000300u, ImmutableString("texture2DProjGradEXT(00I20B10B10B").mangledNameHash());
ASSERT_EQ(0x0000006cu, ImmutableString("texture2DProjGradEXT(00I30B10B10B").mangledNameHash());
ASSERT_EQ(0x000001ceu, ImmutableString("textureCubeGradEXT(00K20B20B20B").mangledNameHash());
ASSERT_EQ(0x000001e4u, ImmutableString("texture2D(00I10B00B").mangledNameHash());
- ASSERT_EQ(0x000002d5u, ImmutableString("texture2DProj(00I20B00B").mangledNameHash());
+ ASSERT_EQ(0x000002d6u, ImmutableString("texture2DProj(00I20B00B").mangledNameHash());
ASSERT_EQ(0x000001cdu, ImmutableString("texture2DProj(00I30B00B").mangledNameHash());
- ASSERT_EQ(0x0000032au, ImmutableString("textureCube(00K20B00B").mangledNameHash());
- ASSERT_EQ(0x0000027du, ImmutableString("dFdx(00B").mangledNameHash());
+ ASSERT_EQ(0x0000032bu, ImmutableString("textureCube(00K20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000027eu, ImmutableString("dFdx(00B").mangledNameHash());
ASSERT_EQ(0x0000016au, ImmutableString("dFdx(10B").mangledNameHash());
ASSERT_EQ(0x00000119u, ImmutableString("dFdx(20B").mangledNameHash());
ASSERT_EQ(0x00000010u, ImmutableString("dFdx(30B").mangledNameHash());
- ASSERT_EQ(0x00000389u, ImmutableString("dFdy(00B").mangledNameHash());
+ ASSERT_EQ(0x0000038au, ImmutableString("dFdy(00B").mangledNameHash());
ASSERT_EQ(0x0000013eu, ImmutableString("dFdy(10B").mangledNameHash());
ASSERT_EQ(0x00000194u, ImmutableString("dFdy(20B").mangledNameHash());
- ASSERT_EQ(0x000002cau, ImmutableString("dFdy(30B").mangledNameHash());
+ ASSERT_EQ(0x000002cbu, ImmutableString("dFdy(30B").mangledNameHash());
ASSERT_EQ(0x0000013cu, ImmutableString("fwidth(00B").mangledNameHash());
ASSERT_EQ(0x000000d6u, ImmutableString("fwidth(10B").mangledNameHash());
- ASSERT_EQ(0x00000312u, ImmutableString("fwidth(20B").mangledNameHash());
- ASSERT_EQ(0x0000024au, ImmutableString("fwidth(30B").mangledNameHash());
- ASSERT_EQ(0x000002c9u, ImmutableString("texture2DLodEXT(00I10B00B").mangledNameHash());
- ASSERT_EQ(0x000002e0u, ImmutableString("texture2DProjLodEXT(00I20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000313u, ImmutableString("fwidth(20B").mangledNameHash());
+ ASSERT_EQ(0x0000024bu, ImmutableString("fwidth(30B").mangledNameHash());
+ ASSERT_EQ(0x000002cau, ImmutableString("texture2DLodEXT(00I10B00B").mangledNameHash());
+ ASSERT_EQ(0x000002e1u, ImmutableString("texture2DProjLodEXT(00I20B00B").mangledNameHash());
ASSERT_EQ(0x00000192u, ImmutableString("texture2DProjLodEXT(00I30B00B").mangledNameHash());
- ASSERT_EQ(0x00000349u, ImmutableString("textureCubeLodEXT(00K20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000034au, ImmutableString("textureCubeLodEXT(00K20B00B").mangledNameHash());
ASSERT_EQ(0x000001b1u, ImmutableString("texture3D(00J20B").mangledNameHash());
- ASSERT_EQ(0x00000276u, ImmutableString("texture3DProj(00J30B").mangledNameHash());
- ASSERT_EQ(0x00000233u, ImmutableString("texture3D(00J20B00B").mangledNameHash());
- ASSERT_EQ(0x0000025bu, ImmutableString("texture3DProj(00J30B00B").mangledNameHash());
- ASSERT_EQ(0x000003a6u, ImmutableString("texture3DLod(00J20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000277u, ImmutableString("texture3DProj(00J30B").mangledNameHash());
+ ASSERT_EQ(0x00000234u, ImmutableString("texture3D(00J20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000025cu, ImmutableString("texture3DProj(00J30B00B").mangledNameHash());
+ ASSERT_EQ(0x000003a7u, ImmutableString("texture3DLod(00J20B00B").mangledNameHash());
ASSERT_EQ(0x00000128u, ImmutableString("texture3DProjLod(00J30B00B").mangledNameHash());
- ASSERT_EQ(0x0000028cu, ImmutableString("texture2DLod(00I10B00B").mangledNameHash());
+ ASSERT_EQ(0x0000028du, ImmutableString("texture2DLod(00I10B00B").mangledNameHash());
ASSERT_EQ(0x00000105u, ImmutableString("texture2DProjLod(00I20B00B").mangledNameHash());
- ASSERT_EQ(0x0000036fu, ImmutableString("texture2DProjLod(00I30B00B").mangledNameHash());
- ASSERT_EQ(0x00000391u, ImmutableString("textureCubeLod(00K20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000370u, ImmutableString("texture2DProjLod(00I30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000392u, ImmutableString("textureCubeLod(00K20B00B").mangledNameHash());
ASSERT_EQ(0x000001cfu, ImmutableString("texture(00I10B").mangledNameHash());
- ASSERT_EQ(0x00000269u, ImmutableString("texture(00R10B").mangledNameHash());
- ASSERT_EQ(0x000002f9u, ImmutableString("texture(00X10B").mangledNameHash());
+ ASSERT_EQ(0x0000026au, ImmutableString("texture(00R10B").mangledNameHash());
+ ASSERT_EQ(0x000002fau, ImmutableString("texture(00X10B").mangledNameHash());
ASSERT_EQ(0x00000117u, ImmutableString("texture(00J20B").mangledNameHash());
ASSERT_EQ(0x00000183u, ImmutableString("texture(00S20B").mangledNameHash());
ASSERT_EQ(0x00000090u, ImmutableString("texture(00Y20B").mangledNameHash());
- ASSERT_EQ(0x0000031fu, ImmutableString("texture(00K20B").mangledNameHash());
+ ASSERT_EQ(0x00000320u, ImmutableString("texture(00K20B").mangledNameHash());
ASSERT_EQ(0x00000089u, ImmutableString("texture(00T20B").mangledNameHash());
ASSERT_EQ(0x00000044u, ImmutableString("texture(00Z20B").mangledNameHash());
ASSERT_EQ(0x00000120u, ImmutableString("texture(00L20B").mangledNameHash());
ASSERT_EQ(0x000000ddu, ImmutableString("texture(00U20B").mangledNameHash());
- ASSERT_EQ(0x00000235u, ImmutableString("texture(00a20B").mangledNameHash());
+ ASSERT_EQ(0x00000236u, ImmutableString("texture(00a20B").mangledNameHash());
ASSERT_EQ(0x0000002fu, ImmutableString("texture(00d20B").mangledNameHash());
- ASSERT_EQ(0x00000358u, ImmutableString("texture(00e30B").mangledNameHash());
- ASSERT_EQ(0x00000331u, ImmutableString("texture(00f30B").mangledNameHash());
+ ASSERT_EQ(0x00000359u, ImmutableString("texture(00e30B").mangledNameHash());
+ ASSERT_EQ(0x00000332u, ImmutableString("texture(00f30B").mangledNameHash());
ASSERT_EQ(0x00000059u, ImmutableString("textureProj(00I20B").mangledNameHash());
- ASSERT_EQ(0x00000384u, ImmutableString("textureProj(00R20B").mangledNameHash());
+ ASSERT_EQ(0x00000385u, ImmutableString("textureProj(00R20B").mangledNameHash());
ASSERT_EQ(0x0000011au, ImmutableString("textureProj(00X20B").mangledNameHash());
- ASSERT_EQ(0x00000213u, ImmutableString("textureProj(00I30B").mangledNameHash());
- ASSERT_EQ(0x00000366u, ImmutableString("textureProj(00R30B").mangledNameHash());
- ASSERT_EQ(0x0000037cu, ImmutableString("textureProj(00X30B").mangledNameHash());
+ ASSERT_EQ(0x00000214u, ImmutableString("textureProj(00I30B").mangledNameHash());
+ ASSERT_EQ(0x00000367u, ImmutableString("textureProj(00R30B").mangledNameHash());
+ ASSERT_EQ(0x0000037du, ImmutableString("textureProj(00X30B").mangledNameHash());
ASSERT_EQ(0x00000141u, ImmutableString("textureProj(00J30B").mangledNameHash());
- ASSERT_EQ(0x000002c7u, ImmutableString("textureProj(00S30B").mangledNameHash());
+ ASSERT_EQ(0x000002c8u, ImmutableString("textureProj(00S30B").mangledNameHash());
ASSERT_EQ(0x00000195u, ImmutableString("textureProj(00Y30B").mangledNameHash());
- ASSERT_EQ(0x000002fau, ImmutableString("textureProj(00d30B").mangledNameHash());
+ ASSERT_EQ(0x000002fbu, ImmutableString("textureProj(00d30B").mangledNameHash());
ASSERT_EQ(0x0000015eu, ImmutableString("textureLod(00I10B00B").mangledNameHash());
- ASSERT_EQ(0x00000281u, ImmutableString("textureLod(00R10B00B").mangledNameHash());
- ASSERT_EQ(0x00000294u, ImmutableString("textureLod(00X10B00B").mangledNameHash());
+ ASSERT_EQ(0x00000282u, ImmutableString("textureLod(00R10B00B").mangledNameHash());
+ ASSERT_EQ(0x00000295u, ImmutableString("textureLod(00X10B00B").mangledNameHash());
ASSERT_EQ(0x000000b7u, ImmutableString("textureLod(00J20B00B").mangledNameHash());
- ASSERT_EQ(0x00000304u, ImmutableString("textureLod(00S20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000305u, ImmutableString("textureLod(00S20B00B").mangledNameHash());
ASSERT_EQ(0x00000035u, ImmutableString("textureLod(00Y20B00B").mangledNameHash());
- ASSERT_EQ(0x00000397u, ImmutableString("textureLod(00K20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000398u, ImmutableString("textureLod(00K20B00B").mangledNameHash());
ASSERT_EQ(0x000000f5u, ImmutableString("textureLod(00T20B00B").mangledNameHash());
- ASSERT_EQ(0x0000029du, ImmutableString("textureLod(00Z20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000029eu, ImmutableString("textureLod(00Z20B00B").mangledNameHash());
ASSERT_EQ(0x00000009u, ImmutableString("textureLod(00L20B00B").mangledNameHash());
- ASSERT_EQ(0x0000036bu, ImmutableString("textureLod(00U20B00B").mangledNameHash());
- ASSERT_EQ(0x00000253u, ImmutableString("textureLod(00a20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000036cu, ImmutableString("textureLod(00U20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000254u, ImmutableString("textureLod(00a20B00B").mangledNameHash());
ASSERT_EQ(0x00000145u, ImmutableString("textureLod(00d20B00B").mangledNameHash());
ASSERT_EQ(0x000000bdu, ImmutableString("textureSize(00I00D").mangledNameHash());
ASSERT_EQ(0x000000a5u, ImmutableString("textureSize(00R00D").mangledNameHash());
- ASSERT_EQ(0x00000376u, ImmutableString("textureSize(00X00D").mangledNameHash());
+ ASSERT_EQ(0x00000377u, ImmutableString("textureSize(00X00D").mangledNameHash());
ASSERT_EQ(0x000001b8u, ImmutableString("textureSize(00J00D").mangledNameHash());
- ASSERT_EQ(0x00000326u, ImmutableString("textureSize(00S00D").mangledNameHash());
+ ASSERT_EQ(0x00000327u, ImmutableString("textureSize(00S00D").mangledNameHash());
ASSERT_EQ(0x0000002du, ImmutableString("textureSize(00Y00D").mangledNameHash());
ASSERT_EQ(0x00000028u, ImmutableString("textureSize(00K00D").mangledNameHash());
- ASSERT_EQ(0x00000359u, ImmutableString("textureSize(00T00D").mangledNameHash());
- ASSERT_EQ(0x000002c0u, ImmutableString("textureSize(00Z00D").mangledNameHash());
- ASSERT_EQ(0x000002bcu, ImmutableString("textureSize(00L00D").mangledNameHash());
- ASSERT_EQ(0x000002dbu, ImmutableString("textureSize(00U00D").mangledNameHash());
+ ASSERT_EQ(0x0000035au, ImmutableString("textureSize(00T00D").mangledNameHash());
+ ASSERT_EQ(0x000002c1u, ImmutableString("textureSize(00Z00D").mangledNameHash());
+ ASSERT_EQ(0x000002bdu, ImmutableString("textureSize(00L00D").mangledNameHash());
+ ASSERT_EQ(0x000002dcu, ImmutableString("textureSize(00U00D").mangledNameHash());
ASSERT_EQ(0x000000deu, ImmutableString("textureSize(00a00D").mangledNameHash());
- ASSERT_EQ(0x00000346u, ImmutableString("textureSize(00d00D").mangledNameHash());
+ ASSERT_EQ(0x00000347u, ImmutableString("textureSize(00d00D").mangledNameHash());
ASSERT_EQ(0x000001bdu, ImmutableString("textureSize(00e00D").mangledNameHash());
- ASSERT_EQ(0x000002f3u, ImmutableString("textureSize(00f00D").mangledNameHash());
+ ASSERT_EQ(0x000002f4u, ImmutableString("textureSize(00f00D").mangledNameHash());
ASSERT_EQ(0x0000007bu, ImmutableString("textureProjLod(00I20B00B").mangledNameHash());
ASSERT_EQ(0x000000d7u, ImmutableString("textureProjLod(00R20B00B").mangledNameHash());
- ASSERT_EQ(0x0000022au, ImmutableString("textureProjLod(00X20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000022bu, ImmutableString("textureProjLod(00X20B00B").mangledNameHash());
ASSERT_EQ(0x000001aau, ImmutableString("textureProjLod(00I30B00B").mangledNameHash());
ASSERT_EQ(0x000001dbu, ImmutableString("textureProjLod(00R30B00B").mangledNameHash());
ASSERT_EQ(0x0000002cu, ImmutableString("textureProjLod(00X30B00B").mangledNameHash());
ASSERT_EQ(0x000000e3u, ImmutableString("textureProjLod(00J30B00B").mangledNameHash());
ASSERT_EQ(0x000000b9u, ImmutableString("textureProjLod(00S30B00B").mangledNameHash());
- ASSERT_EQ(0x00000305u, ImmutableString("textureProjLod(00Y30B00B").mangledNameHash());
- ASSERT_EQ(0x00000228u, ImmutableString("textureProjLod(00d30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000306u, ImmutableString("textureProjLod(00Y30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000229u, ImmutableString("textureProjLod(00d30B00B").mangledNameHash());
ASSERT_EQ(0x0000005au, ImmutableString("texelFetch(00I10D00D").mangledNameHash());
- ASSERT_EQ(0x00000334u, ImmutableString("texelFetch(00R10D00D").mangledNameHash());
- ASSERT_EQ(0x00000289u, ImmutableString("texelFetch(00X10D00D").mangledNameHash());
- ASSERT_EQ(0x00000393u, ImmutableString("texelFetch(00J20D00D").mangledNameHash());
- ASSERT_EQ(0x0000024du, ImmutableString("texelFetch(00S20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000335u, ImmutableString("texelFetch(00R10D00D").mangledNameHash());
+ ASSERT_EQ(0x0000028au, ImmutableString("texelFetch(00X10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000394u, ImmutableString("texelFetch(00J20D00D").mangledNameHash());
+ ASSERT_EQ(0x0000024eu, ImmutableString("texelFetch(00S20D00D").mangledNameHash());
ASSERT_EQ(0x0000006bu, ImmutableString("texelFetch(00Y20D00D").mangledNameHash());
ASSERT_EQ(0x00000198u, ImmutableString("texelFetch(00L20D00D").mangledNameHash());
ASSERT_EQ(0x00000147u, ImmutableString("texelFetch(00U20D00D").mangledNameHash());
ASSERT_EQ(0x00000038u, ImmutableString("texelFetch(00a20D00D").mangledNameHash());
ASSERT_EQ(0x00000021u, ImmutableString("textureGrad(00I10B10B10B").mangledNameHash());
- ASSERT_EQ(0x0000033cu, ImmutableString("textureGrad(00R10B10B10B").mangledNameHash());
- ASSERT_EQ(0x00000247u, ImmutableString("textureGrad(00X10B10B10B").mangledNameHash());
+ ASSERT_EQ(0x0000033du, ImmutableString("textureGrad(00R10B10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000248u, ImmutableString("textureGrad(00X10B10B10B").mangledNameHash());
ASSERT_EQ(0x000001b4u, ImmutableString("textureGrad(00J20B20B20B").mangledNameHash());
ASSERT_EQ(0x00000109u, ImmutableString("textureGrad(00S20B20B20B").mangledNameHash());
ASSERT_EQ(0x00000112u, ImmutableString("textureGrad(00Y20B20B20B").mangledNameHash());
- ASSERT_EQ(0x0000024bu, ImmutableString("textureGrad(00K20B20B20B").mangledNameHash());
- ASSERT_EQ(0x0000035eu, ImmutableString("textureGrad(00T20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000024cu, ImmutableString("textureGrad(00K20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000035fu, ImmutableString("textureGrad(00T20B20B20B").mangledNameHash());
ASSERT_EQ(0x00000156u, ImmutableString("textureGrad(00Z20B20B20B").mangledNameHash());
ASSERT_EQ(0x0000006du, ImmutableString("textureGrad(00d20B10B10B").mangledNameHash());
- ASSERT_EQ(0x00000242u, ImmutableString("textureGrad(00e30B20B20B").mangledNameHash());
- ASSERT_EQ(0x0000033bu, ImmutableString("textureGrad(00L20B10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000243u, ImmutableString("textureGrad(00e30B20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000033cu, ImmutableString("textureGrad(00L20B10B10B").mangledNameHash());
ASSERT_EQ(0x0000019du, ImmutableString("textureGrad(00U20B10B10B").mangledNameHash());
ASSERT_EQ(0x000001a5u, ImmutableString("textureGrad(00a20B10B10B").mangledNameHash());
- ASSERT_EQ(0x00000237u, ImmutableString("textureGrad(00f30B10B10B").mangledNameHash());
- ASSERT_EQ(0x0000033du, ImmutableString("textureProjGrad(00I20B10B10B").mangledNameHash());
- ASSERT_EQ(0x00000330u, ImmutableString("textureProjGrad(00R20B10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000238u, ImmutableString("textureGrad(00f30B10B10B").mangledNameHash());
+ ASSERT_EQ(0x0000033eu, ImmutableString("textureProjGrad(00I20B10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000331u, ImmutableString("textureProjGrad(00R20B10B10B").mangledNameHash());
ASSERT_EQ(0x000001c2u, ImmutableString("textureProjGrad(00X20B10B10B").mangledNameHash());
ASSERT_EQ(0x0000000cu, ImmutableString("textureProjGrad(00I30B10B10B").mangledNameHash());
ASSERT_EQ(0x000000f8u, ImmutableString("textureProjGrad(00R30B10B10B").mangledNameHash());
- ASSERT_EQ(0x000003a2u, ImmutableString("textureProjGrad(00X30B10B10B").mangledNameHash());
+ ASSERT_EQ(0x000003a3u, ImmutableString("textureProjGrad(00X30B10B10B").mangledNameHash());
ASSERT_EQ(0x0000013du, ImmutableString("textureProjGrad(00J30B20B20B").mangledNameHash());
ASSERT_EQ(0x00000051u, ImmutableString("textureProjGrad(00S30B20B20B").mangledNameHash());
ASSERT_EQ(0x0000001bu, ImmutableString("textureProjGrad(00Y30B20B20B").mangledNameHash());
ASSERT_EQ(0x000001b5u, ImmutableString("textureProjGrad(00d30B10B10B").mangledNameHash());
ASSERT_EQ(0x000001dcu, ImmutableString("textureSize(00P").mangledNameHash());
- ASSERT_EQ(0x000002aeu, ImmutableString("textureSize(00V").mangledNameHash());
- ASSERT_EQ(0x0000020eu, ImmutableString("textureSize(00b").mangledNameHash());
- ASSERT_EQ(0x00000225u, ImmutableString("textureSize(00Q").mangledNameHash());
- ASSERT_EQ(0x00000229u, ImmutableString("textureSize(00W").mangledNameHash());
- ASSERT_EQ(0x0000020du, ImmutableString("textureSize(00c").mangledNameHash());
+ ASSERT_EQ(0x000002afu, ImmutableString("textureSize(00V").mangledNameHash());
+ ASSERT_EQ(0x0000020fu, ImmutableString("textureSize(00b").mangledNameHash());
+ ASSERT_EQ(0x00000226u, ImmutableString("textureSize(00Q").mangledNameHash());
+ ASSERT_EQ(0x0000022au, ImmutableString("textureSize(00W").mangledNameHash());
+ ASSERT_EQ(0x0000020eu, ImmutableString("textureSize(00c").mangledNameHash());
ASSERT_EQ(0x00000096u, ImmutableString("texelFetch(00P10D00D").mangledNameHash());
ASSERT_EQ(0x0000012fu, ImmutableString("texelFetch(00V10D00D").mangledNameHash());
- ASSERT_EQ(0x0000028du, ImmutableString("texelFetch(00b10D00D").mangledNameHash());
- ASSERT_EQ(0x000002c5u, ImmutableString("texelFetch(00Q20D00D").mangledNameHash());
+ ASSERT_EQ(0x0000028eu, ImmutableString("texelFetch(00b10D00D").mangledNameHash());
+ ASSERT_EQ(0x000002c6u, ImmutableString("texelFetch(00Q20D00D").mangledNameHash());
ASSERT_EQ(0x00000106u, ImmutableString("texelFetch(00W20D00D").mangledNameHash());
ASSERT_EQ(0x000001d2u, ImmutableString("texelFetch(00c20D00D").mangledNameHash());
ASSERT_EQ(0x000000b1u, ImmutableString("texture(00I10B00B").mangledNameHash());
@@ -647,9 +647,9 @@
ASSERT_EQ(0x00000186u, ImmutableString("texture(00Z20B00B").mangledNameHash());
ASSERT_EQ(0x000001f4u, ImmutableString("texture(00L20B00B").mangledNameHash());
ASSERT_EQ(0x00000182u, ImmutableString("texture(00U20B00B").mangledNameHash());
- ASSERT_EQ(0x0000038eu, ImmutableString("texture(00a20B00B").mangledNameHash());
- ASSERT_EQ(0x00000386u, ImmutableString("textureProj(00I20B00B").mangledNameHash());
- ASSERT_EQ(0x00000285u, ImmutableString("textureProj(00R20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000038fu, ImmutableString("texture(00a20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000387u, ImmutableString("textureProj(00I20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000286u, ImmutableString("textureProj(00R20B00B").mangledNameHash());
ASSERT_EQ(0x000001e5u, ImmutableString("textureProj(00X20B00B").mangledNameHash());
ASSERT_EQ(0x000000aau, ImmutableString("textureProj(00I30B00B").mangledNameHash());
ASSERT_EQ(0x00000000u, ImmutableString("textureProj(00R30B00B").mangledNameHash());
@@ -657,244 +657,244 @@
ASSERT_EQ(0x00000030u, ImmutableString("textureProj(00J30B00B").mangledNameHash());
ASSERT_EQ(0x00000111u, ImmutableString("textureProj(00S30B00B").mangledNameHash());
ASSERT_EQ(0x000001b0u, ImmutableString("textureProj(00Y30B00B").mangledNameHash());
- ASSERT_EQ(0x000002abu, ImmutableString("texture(00d20B00B").mangledNameHash());
+ ASSERT_EQ(0x000002acu, ImmutableString("texture(00d20B00B").mangledNameHash());
ASSERT_EQ(0x00000160u, ImmutableString("texture(00e30B00B").mangledNameHash());
- ASSERT_EQ(0x000002f7u, ImmutableString("textureProj(00d30B00B").mangledNameHash());
- ASSERT_EQ(0x0000038fu, ImmutableString("texture(00M10B00B").mangledNameHash());
- ASSERT_EQ(0x00000394u, ImmutableString("textureProj(00M20B00B").mangledNameHash());
+ ASSERT_EQ(0x000002f8u, ImmutableString("textureProj(00d30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000390u, ImmutableString("texture(00M10B00B").mangledNameHash());
+ ASSERT_EQ(0x00000395u, ImmutableString("textureProj(00M20B00B").mangledNameHash());
ASSERT_EQ(0x000000afu, ImmutableString("textureProj(00M30B00B").mangledNameHash());
ASSERT_EQ(0x00000001u, ImmutableString("texture(00N10B00B").mangledNameHash());
- ASSERT_EQ(0x000002f4u, ImmutableString("textureProj(00N20B00B").mangledNameHash());
+ ASSERT_EQ(0x000002f5u, ImmutableString("textureProj(00N20B00B").mangledNameHash());
ASSERT_EQ(0x000000a4u, ImmutableString("textureProj(00N30B00B").mangledNameHash());
ASSERT_EQ(0x000000a8u, ImmutableString("textureOffset(00I10B10D").mangledNameHash());
- ASSERT_EQ(0x00000262u, ImmutableString("textureOffset(00R10B10D").mangledNameHash());
- ASSERT_EQ(0x00000266u, ImmutableString("textureOffset(00X10B10D").mangledNameHash());
- ASSERT_EQ(0x00000392u, ImmutableString("textureOffset(00J20B20D").mangledNameHash());
- ASSERT_EQ(0x00000380u, ImmutableString("textureOffset(00S20B20D").mangledNameHash());
- ASSERT_EQ(0x0000029fu, ImmutableString("textureOffset(00Y20B20D").mangledNameHash());
+ ASSERT_EQ(0x00000263u, ImmutableString("textureOffset(00R10B10D").mangledNameHash());
+ ASSERT_EQ(0x00000267u, ImmutableString("textureOffset(00X10B10D").mangledNameHash());
+ ASSERT_EQ(0x00000393u, ImmutableString("textureOffset(00J20B20D").mangledNameHash());
+ ASSERT_EQ(0x00000381u, ImmutableString("textureOffset(00S20B20D").mangledNameHash());
+ ASSERT_EQ(0x000002a0u, ImmutableString("textureOffset(00Y20B20D").mangledNameHash());
ASSERT_EQ(0x0000000fu, ImmutableString("textureOffset(00d20B10D").mangledNameHash());
ASSERT_EQ(0x000000c8u, ImmutableString("textureOffset(00L20B10D").mangledNameHash());
ASSERT_EQ(0x0000006fu, ImmutableString("textureOffset(00U20B10D").mangledNameHash());
ASSERT_EQ(0x000000e9u, ImmutableString("textureOffset(00a20B10D").mangledNameHash());
ASSERT_EQ(0x000000dau, ImmutableString("textureProjOffset(00I20B10D").mangledNameHash());
ASSERT_EQ(0x000000a1u, ImmutableString("textureProjOffset(00R20B10D").mangledNameHash());
- ASSERT_EQ(0x00000381u, ImmutableString("textureProjOffset(00X20B10D").mangledNameHash());
+ ASSERT_EQ(0x00000382u, ImmutableString("textureProjOffset(00X20B10D").mangledNameHash());
ASSERT_EQ(0x0000016bu, ImmutableString("textureProjOffset(00I30B10D").mangledNameHash());
ASSERT_EQ(0x0000006eu, ImmutableString("textureProjOffset(00R30B10D").mangledNameHash());
- ASSERT_EQ(0x000002d8u, ImmutableString("textureProjOffset(00X30B10D").mangledNameHash());
- ASSERT_EQ(0x00000360u, ImmutableString("textureProjOffset(00J30B20D").mangledNameHash());
+ ASSERT_EQ(0x000002d9u, ImmutableString("textureProjOffset(00X30B10D").mangledNameHash());
+ ASSERT_EQ(0x00000361u, ImmutableString("textureProjOffset(00J30B20D").mangledNameHash());
ASSERT_EQ(0x000000ceu, ImmutableString("textureProjOffset(00S30B20D").mangledNameHash());
- ASSERT_EQ(0x00000321u, ImmutableString("textureProjOffset(00Y30B20D").mangledNameHash());
- ASSERT_EQ(0x00000364u, ImmutableString("textureProjOffset(00d30B10D").mangledNameHash());
+ ASSERT_EQ(0x00000322u, ImmutableString("textureProjOffset(00Y30B20D").mangledNameHash());
+ ASSERT_EQ(0x00000365u, ImmutableString("textureProjOffset(00d30B10D").mangledNameHash());
ASSERT_EQ(0x0000006au, ImmutableString("textureLodOffset(00I10B00B10D").mangledNameHash());
ASSERT_EQ(0x00000099u, ImmutableString("textureLodOffset(00R10B00B10D").mangledNameHash());
ASSERT_EQ(0x000000c6u, ImmutableString("textureLodOffset(00X10B00B10D").mangledNameHash());
- ASSERT_EQ(0x0000023fu, ImmutableString("textureLodOffset(00J20B00B20D").mangledNameHash());
+ ASSERT_EQ(0x00000240u, ImmutableString("textureLodOffset(00J20B00B20D").mangledNameHash());
ASSERT_EQ(0x0000005eu, ImmutableString("textureLodOffset(00S20B00B20D").mangledNameHash());
ASSERT_EQ(0x00000161u, ImmutableString("textureLodOffset(00Y20B00B20D").mangledNameHash());
ASSERT_EQ(0x000001bfu, ImmutableString("textureLodOffset(00d20B00B10D").mangledNameHash());
- ASSERT_EQ(0x0000034eu, ImmutableString("textureLodOffset(00L20B00B10D").mangledNameHash());
- ASSERT_EQ(0x00000284u, ImmutableString("textureLodOffset(00U20B00B10D").mangledNameHash());
+ ASSERT_EQ(0x0000034fu, ImmutableString("textureLodOffset(00L20B00B10D").mangledNameHash());
+ ASSERT_EQ(0x00000285u, ImmutableString("textureLodOffset(00U20B00B10D").mangledNameHash());
ASSERT_EQ(0x00000036u, ImmutableString("textureLodOffset(00a20B00B10D").mangledNameHash());
- ASSERT_EQ(0x0000032eu, ImmutableString("textureProjLodOffset(00I20B00B10D").mangledNameHash());
+ ASSERT_EQ(0x0000032fu, ImmutableString("textureProjLodOffset(00I20B00B10D").mangledNameHash());
ASSERT_EQ(0x00000134u, ImmutableString("textureProjLodOffset(00R20B00B10D").mangledNameHash());
ASSERT_EQ(0x0000017au, ImmutableString("textureProjLodOffset(00X20B00B10D").mangledNameHash());
- ASSERT_EQ(0x00000336u, ImmutableString("textureProjLodOffset(00I30B00B10D").mangledNameHash());
+ ASSERT_EQ(0x00000337u, ImmutableString("textureProjLodOffset(00I30B00B10D").mangledNameHash());
ASSERT_EQ(0x000001deu, ImmutableString("textureProjLodOffset(00R30B00B10D").mangledNameHash());
- ASSERT_EQ(0x00000354u, ImmutableString("textureProjLodOffset(00X30B00B10D").mangledNameHash());
+ ASSERT_EQ(0x00000355u, ImmutableString("textureProjLodOffset(00X30B00B10D").mangledNameHash());
ASSERT_EQ(0x000001c9u, ImmutableString("textureProjLodOffset(00J30B00B20D").mangledNameHash());
ASSERT_EQ(0x0000017du, ImmutableString("textureProjLodOffset(00S30B00B20D").mangledNameHash());
ASSERT_EQ(0x000001bcu, ImmutableString("textureProjLodOffset(00Y30B00B20D").mangledNameHash());
- ASSERT_EQ(0x00000333u, ImmutableString("textureProjLodOffset(00d30B00B10D").mangledNameHash());
+ ASSERT_EQ(0x00000334u, ImmutableString("textureProjLodOffset(00d30B00B10D").mangledNameHash());
ASSERT_EQ(0x0000012du, ImmutableString("texelFetchOffset(00I10D00D10D").mangledNameHash());
ASSERT_EQ(0x000000c0u, ImmutableString("texelFetchOffset(00R10D00D10D").mangledNameHash());
- ASSERT_EQ(0x000002a9u, ImmutableString("texelFetchOffset(00X10D00D10D").mangledNameHash());
- ASSERT_EQ(0x00000205u, ImmutableString("texelFetchOffset(00J20D00D20D").mangledNameHash());
+ ASSERT_EQ(0x000002aau, ImmutableString("texelFetchOffset(00X10D00D10D").mangledNameHash());
+ ASSERT_EQ(0x00000206u, ImmutableString("texelFetchOffset(00J20D00D20D").mangledNameHash());
ASSERT_EQ(0x0000011eu, ImmutableString("texelFetchOffset(00S20D00D20D").mangledNameHash());
ASSERT_EQ(0x00000037u, ImmutableString("texelFetchOffset(00Y20D00D20D").mangledNameHash());
- ASSERT_EQ(0x00000259u, ImmutableString("texelFetchOffset(00L20D00D10D").mangledNameHash());
+ ASSERT_EQ(0x0000025au, ImmutableString("texelFetchOffset(00L20D00D10D").mangledNameHash());
ASSERT_EQ(0x000001bbu, ImmutableString("texelFetchOffset(00U20D00D10D").mangledNameHash());
ASSERT_EQ(0x00000125u, ImmutableString("texelFetchOffset(00a20D00D10D").mangledNameHash());
- ASSERT_EQ(0x0000023au, ImmutableString("textureGradOffset(00I10B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x000002dcu, ImmutableString("textureGradOffset(00R10B10B10B10D").mangledNameHash());
+ ASSERT_EQ(0x0000023bu, ImmutableString("textureGradOffset(00I10B10B10B10D").mangledNameHash());
+ ASSERT_EQ(0x000002ddu, ImmutableString("textureGradOffset(00R10B10B10B10D").mangledNameHash());
ASSERT_EQ(0x00000083u, ImmutableString("textureGradOffset(00X10B10B10B10D").mangledNameHash());
ASSERT_EQ(0x00000064u, ImmutableString("textureGradOffset(00J20B20B20B20D").mangledNameHash());
ASSERT_EQ(0x0000009fu, ImmutableString("textureGradOffset(00S20B20B20B20D").mangledNameHash());
- ASSERT_EQ(0x0000022fu, ImmutableString("textureGradOffset(00Y20B20B20B20D").mangledNameHash());
+ ASSERT_EQ(0x00000230u, ImmutableString("textureGradOffset(00Y20B20B20B20D").mangledNameHash());
ASSERT_EQ(0x000001ddu, ImmutableString("textureGradOffset(00d20B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x00000324u, ImmutableString("textureGradOffset(00L20B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x0000024eu, ImmutableString("textureGradOffset(00U20B10B10B10D").mangledNameHash());
+ ASSERT_EQ(0x00000325u, ImmutableString("textureGradOffset(00L20B10B10B10D").mangledNameHash());
+ ASSERT_EQ(0x0000024fu, ImmutableString("textureGradOffset(00U20B10B10B10D").mangledNameHash());
ASSERT_EQ(0x00000187u, ImmutableString("textureGradOffset(00a20B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x00000211u, ImmutableString("textureGradOffset(00f30B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x0000036eu,
+ ASSERT_EQ(0x00000212u, ImmutableString("textureGradOffset(00f30B10B10B10D").mangledNameHash());
+ ASSERT_EQ(0x0000036fu,
ImmutableString("textureProjGradOffset(00I20B10B10B10D").mangledNameHash());
ASSERT_EQ(0x00000056u,
ImmutableString("textureProjGradOffset(00R20B10B10B10D").mangledNameHash());
ASSERT_EQ(0x00000126u,
ImmutableString("textureProjGradOffset(00X20B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x00000264u,
+ ASSERT_EQ(0x00000265u,
ImmutableString("textureProjGradOffset(00I30B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x00000396u,
+ ASSERT_EQ(0x00000397u,
ImmutableString("textureProjGradOffset(00R30B10B10B10D").mangledNameHash());
ASSERT_EQ(0x000000feu,
ImmutableString("textureProjGradOffset(00X30B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x000003a0u,
+ ASSERT_EQ(0x000003a1u,
ImmutableString("textureProjGradOffset(00J30B20B20B20D").mangledNameHash());
ASSERT_EQ(0x00000115u,
ImmutableString("textureProjGradOffset(00S30B20B20B20D").mangledNameHash());
- ASSERT_EQ(0x0000035du,
+ ASSERT_EQ(0x0000035eu,
ImmutableString("textureProjGradOffset(00Y30B20B20B20D").mangledNameHash());
- ASSERT_EQ(0x00000255u,
+ ASSERT_EQ(0x00000256u,
ImmutableString("textureProjGradOffset(00d30B10B10B10D").mangledNameHash());
ASSERT_EQ(0x000000ffu, ImmutableString("textureOffset(00I10B10D00B").mangledNameHash());
- ASSERT_EQ(0x00000241u, ImmutableString("textureOffset(00R10B10D00B").mangledNameHash());
- ASSERT_EQ(0x000002b2u, ImmutableString("textureOffset(00X10B10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000242u, ImmutableString("textureOffset(00R10B10D00B").mangledNameHash());
+ ASSERT_EQ(0x000002b3u, ImmutableString("textureOffset(00X10B10D00B").mangledNameHash());
ASSERT_EQ(0x000000cau, ImmutableString("textureOffset(00J20B20D00B").mangledNameHash());
- ASSERT_EQ(0x0000026au, ImmutableString("textureOffset(00S20B20D00B").mangledNameHash());
+ ASSERT_EQ(0x0000026bu, ImmutableString("textureOffset(00S20B20D00B").mangledNameHash());
ASSERT_EQ(0x0000009eu, ImmutableString("textureOffset(00Y20B20D00B").mangledNameHash());
- ASSERT_EQ(0x00000268u, ImmutableString("textureOffset(00d20B10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000269u, ImmutableString("textureOffset(00d20B10D00B").mangledNameHash());
ASSERT_EQ(0x000000c5u, ImmutableString("textureOffset(00L20B10D00B").mangledNameHash());
ASSERT_EQ(0x000001a6u, ImmutableString("textureOffset(00U20B10D00B").mangledNameHash());
- ASSERT_EQ(0x00000215u, ImmutableString("textureOffset(00a20B10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000216u, ImmutableString("textureOffset(00a20B10D00B").mangledNameHash());
ASSERT_EQ(0x00000078u, ImmutableString("textureProjOffset(00I20B10D00B").mangledNameHash());
- ASSERT_EQ(0x0000026du, ImmutableString("textureProjOffset(00R20B10D00B").mangledNameHash());
+ ASSERT_EQ(0x0000026eu, ImmutableString("textureProjOffset(00R20B10D00B").mangledNameHash());
ASSERT_EQ(0x000000fbu, ImmutableString("textureProjOffset(00X20B10D00B").mangledNameHash());
- ASSERT_EQ(0x00000345u, ImmutableString("textureProjOffset(00I30B10D00B").mangledNameHash());
- ASSERT_EQ(0x00000388u, ImmutableString("textureProjOffset(00R30B10D00B").mangledNameHash());
- ASSERT_EQ(0x00000398u, ImmutableString("textureProjOffset(00X30B10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000346u, ImmutableString("textureProjOffset(00I30B10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000389u, ImmutableString("textureProjOffset(00R30B10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000399u, ImmutableString("textureProjOffset(00X30B10D00B").mangledNameHash());
ASSERT_EQ(0x00000048u, ImmutableString("textureProjOffset(00J30B20D00B").mangledNameHash());
ASSERT_EQ(0x0000002bu, ImmutableString("textureProjOffset(00S30B20D00B").mangledNameHash());
- ASSERT_EQ(0x000002b9u, ImmutableString("textureProjOffset(00Y30B20D00B").mangledNameHash());
- ASSERT_EQ(0x00000362u, ImmutableString("textureProjOffset(00d30B10D00B").mangledNameHash());
+ ASSERT_EQ(0x000002bau, ImmutableString("textureProjOffset(00Y30B20D00B").mangledNameHash());
+ ASSERT_EQ(0x00000363u, ImmutableString("textureProjOffset(00d30B10D00B").mangledNameHash());
ASSERT_EQ(0x00000087u, ImmutableString("texture(00M10B").mangledNameHash());
ASSERT_EQ(0x000000b0u, ImmutableString("textureProj(00M20B").mangledNameHash());
- ASSERT_EQ(0x0000030au, ImmutableString("textureProj(00M30B").mangledNameHash());
- ASSERT_EQ(0x00000316u, ImmutableString("textureSize(00M00D").mangledNameHash());
+ ASSERT_EQ(0x0000030bu, ImmutableString("textureProj(00M30B").mangledNameHash());
+ ASSERT_EQ(0x00000317u, ImmutableString("textureSize(00M00D").mangledNameHash());
ASSERT_EQ(0x0000009bu, ImmutableString("texelFetch(00M10D00D").mangledNameHash());
ASSERT_EQ(0x0000011fu, ImmutableString("texture(00N10B").mangledNameHash());
- ASSERT_EQ(0x0000034bu, ImmutableString("textureProj(00N20B").mangledNameHash());
- ASSERT_EQ(0x00000256u, ImmutableString("textureProj(00N30B").mangledNameHash());
+ ASSERT_EQ(0x0000034cu, ImmutableString("textureProj(00N20B").mangledNameHash());
+ ASSERT_EQ(0x00000257u, ImmutableString("textureProj(00N30B").mangledNameHash());
ASSERT_EQ(0x0000007du, ImmutableString("rgb_2_yuv(20B00H").mangledNameHash());
ASSERT_EQ(0x000001a2u, ImmutableString("yuv_2_rgb(20B00H").mangledNameHash());
- ASSERT_EQ(0x00000204u, ImmutableString("textureSize(00N00D").mangledNameHash());
+ ASSERT_EQ(0x00000205u, ImmutableString("textureSize(00N00D").mangledNameHash());
ASSERT_EQ(0x0000003du, ImmutableString("texelFetch(00N10D00D").mangledNameHash());
- ASSERT_EQ(0x0000023cu, ImmutableString("textureGather(00I10B").mangledNameHash());
- ASSERT_EQ(0x00000302u, ImmutableString("textureGather(00R10B").mangledNameHash());
- ASSERT_EQ(0x00000216u, ImmutableString("textureGather(00X10B").mangledNameHash());
+ ASSERT_EQ(0x0000023du, ImmutableString("textureGather(00I10B").mangledNameHash());
+ ASSERT_EQ(0x00000303u, ImmutableString("textureGather(00R10B").mangledNameHash());
+ ASSERT_EQ(0x00000217u, ImmutableString("textureGather(00X10B").mangledNameHash());
ASSERT_EQ(0x0000012eu, ImmutableString("textureGather(00I10B00D").mangledNameHash());
- ASSERT_EQ(0x000002beu, ImmutableString("textureGather(00R10B00D").mangledNameHash());
+ ASSERT_EQ(0x000002bfu, ImmutableString("textureGather(00R10B00D").mangledNameHash());
ASSERT_EQ(0x000001bau, ImmutableString("textureGather(00X10B00D").mangledNameHash());
ASSERT_EQ(0x0000017fu, ImmutableString("textureGather(00L20B").mangledNameHash());
- ASSERT_EQ(0x000002c1u, ImmutableString("textureGather(00U20B").mangledNameHash());
- ASSERT_EQ(0x00000218u, ImmutableString("textureGather(00a20B").mangledNameHash());
+ ASSERT_EQ(0x000002c2u, ImmutableString("textureGather(00U20B").mangledNameHash());
+ ASSERT_EQ(0x00000219u, ImmutableString("textureGather(00a20B").mangledNameHash());
ASSERT_EQ(0x00000114u, ImmutableString("textureGather(00L20B00D").mangledNameHash());
- ASSERT_EQ(0x000002f2u, ImmutableString("textureGather(00U20B00D").mangledNameHash());
- ASSERT_EQ(0x0000039fu, ImmutableString("textureGather(00a20B00D").mangledNameHash());
+ ASSERT_EQ(0x000002f3u, ImmutableString("textureGather(00U20B00D").mangledNameHash());
+ ASSERT_EQ(0x000003a0u, ImmutableString("textureGather(00a20B00D").mangledNameHash());
ASSERT_EQ(0x000000d3u, ImmutableString("textureGather(00K20B").mangledNameHash());
- ASSERT_EQ(0x0000039eu, ImmutableString("textureGather(00T20B").mangledNameHash());
- ASSERT_EQ(0x00000265u, ImmutableString("textureGather(00Z20B").mangledNameHash());
+ ASSERT_EQ(0x0000039fu, ImmutableString("textureGather(00T20B").mangledNameHash());
+ ASSERT_EQ(0x00000266u, ImmutableString("textureGather(00Z20B").mangledNameHash());
ASSERT_EQ(0x00000014u, ImmutableString("textureGather(00K20B00D").mangledNameHash());
- ASSERT_EQ(0x0000034au, ImmutableString("textureGather(00T20B00D").mangledNameHash());
- ASSERT_EQ(0x00000301u, ImmutableString("textureGather(00Z20B00D").mangledNameHash());
+ ASSERT_EQ(0x0000034bu, ImmutableString("textureGather(00T20B00D").mangledNameHash());
+ ASSERT_EQ(0x00000302u, ImmutableString("textureGather(00Z20B00D").mangledNameHash());
ASSERT_EQ(0x00000172u, ImmutableString("textureGather(00d10B").mangledNameHash());
- ASSERT_EQ(0x00000379u, ImmutableString("textureGather(00d10B00B").mangledNameHash());
+ ASSERT_EQ(0x0000037au, ImmutableString("textureGather(00d10B00B").mangledNameHash());
ASSERT_EQ(0x00000137u, ImmutableString("textureGather(00f20B").mangledNameHash());
ASSERT_EQ(0x000001a3u, ImmutableString("textureGather(00f20B00B").mangledNameHash());
- ASSERT_EQ(0x0000033eu, ImmutableString("textureGather(00e20B").mangledNameHash());
+ ASSERT_EQ(0x0000033fu, ImmutableString("textureGather(00e20B").mangledNameHash());
ASSERT_EQ(0x00000150u, ImmutableString("textureGather(00e20B00B").mangledNameHash());
ASSERT_EQ(0x000000c4u, ImmutableString("textureGatherOffset(00I10B10D").mangledNameHash());
ASSERT_EQ(0x0000005fu, ImmutableString("textureGatherOffset(00R10B10D").mangledNameHash());
- ASSERT_EQ(0x000002ecu, ImmutableString("textureGatherOffset(00X10B10D").mangledNameHash());
+ ASSERT_EQ(0x000002edu, ImmutableString("textureGatherOffset(00X10B10D").mangledNameHash());
ASSERT_EQ(0x000001b9u, ImmutableString("textureGatherOffset(00I10B10D00D").mangledNameHash());
ASSERT_EQ(0x000001e1u, ImmutableString("textureGatherOffset(00R10B10D00D").mangledNameHash());
- ASSERT_EQ(0x0000035au, ImmutableString("textureGatherOffset(00X10B10D00D").mangledNameHash());
- ASSERT_EQ(0x00000252u, ImmutableString("textureGatherOffset(00L20B10D").mangledNameHash());
- ASSERT_EQ(0x000002bau, ImmutableString("textureGatherOffset(00U20B10D").mangledNameHash());
- ASSERT_EQ(0x00000236u, ImmutableString("textureGatherOffset(00a20B10D").mangledNameHash());
+ ASSERT_EQ(0x0000035bu, ImmutableString("textureGatherOffset(00X10B10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000253u, ImmutableString("textureGatherOffset(00L20B10D").mangledNameHash());
+ ASSERT_EQ(0x000002bbu, ImmutableString("textureGatherOffset(00U20B10D").mangledNameHash());
+ ASSERT_EQ(0x00000237u, ImmutableString("textureGatherOffset(00a20B10D").mangledNameHash());
ASSERT_EQ(0x00000022u, ImmutableString("textureGatherOffset(00L20B10D00D").mangledNameHash());
ASSERT_EQ(0x000000e1u, ImmutableString("textureGatherOffset(00U20B10D00D").mangledNameHash());
ASSERT_EQ(0x000000c2u, ImmutableString("textureGatherOffset(00a20B10D00D").mangledNameHash());
- ASSERT_EQ(0x0000021bu, ImmutableString("textureGatherOffset(00d10B00B10D").mangledNameHash());
- ASSERT_EQ(0x00000291u, ImmutableString("textureGatherOffset(00f20B00B10D").mangledNameHash());
+ ASSERT_EQ(0x0000021cu, ImmutableString("textureGatherOffset(00d10B00B10D").mangledNameHash());
+ ASSERT_EQ(0x00000292u, ImmutableString("textureGatherOffset(00f20B00B10D").mangledNameHash());
ASSERT_EQ(0x000000cdu, ImmutableString("atomicCounter(00G").mangledNameHash());
- ASSERT_EQ(0x0000034fu, ImmutableString("atomicCounterIncrement(00G").mangledNameHash());
- ASSERT_EQ(0x00000329u, ImmutableString("atomicCounterDecrement(00G").mangledNameHash());
- ASSERT_EQ(0x00000243u, ImmutableString("atomicAdd(00E00E").mangledNameHash());
+ ASSERT_EQ(0x00000350u, ImmutableString("atomicCounterIncrement(00G").mangledNameHash());
+ ASSERT_EQ(0x0000032au, ImmutableString("atomicCounterDecrement(00G").mangledNameHash());
+ ASSERT_EQ(0x00000244u, ImmutableString("atomicAdd(00E00E").mangledNameHash());
ASSERT_EQ(0x0000003eu, ImmutableString("atomicAdd(00D00D").mangledNameHash());
ASSERT_EQ(0x0000014cu, ImmutableString("atomicMin(00E00E").mangledNameHash());
- ASSERT_EQ(0x00000375u, ImmutableString("atomicMin(00D00D").mangledNameHash());
- ASSERT_EQ(0x00000373u, ImmutableString("atomicMax(00E00E").mangledNameHash());
- ASSERT_EQ(0x00000200u, ImmutableString("atomicMax(00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000376u, ImmutableString("atomicMin(00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000374u, ImmutableString("atomicMax(00E00E").mangledNameHash());
+ ASSERT_EQ(0x00000201u, ImmutableString("atomicMax(00D00D").mangledNameHash());
ASSERT_EQ(0x000000bbu, ImmutableString("atomicAnd(00E00E").mangledNameHash());
ASSERT_EQ(0x00000075u, ImmutableString("atomicAnd(00D00D").mangledNameHash());
ASSERT_EQ(0x000000adu, ImmutableString("atomicOr(00E00E").mangledNameHash());
- ASSERT_EQ(0x000003a5u, ImmutableString("atomicOr(00D00D").mangledNameHash());
+ ASSERT_EQ(0x000003a6u, ImmutableString("atomicOr(00D00D").mangledNameHash());
ASSERT_EQ(0x000000a0u, ImmutableString("atomicXor(00E00E").mangledNameHash());
ASSERT_EQ(0x00000068u, ImmutableString("atomicXor(00D00D").mangledNameHash());
ASSERT_EQ(0x000000a9u, ImmutableString("atomicExchange(00E00E").mangledNameHash());
ASSERT_EQ(0x000001e0u, ImmutableString("atomicExchange(00D00D").mangledNameHash());
- ASSERT_EQ(0x00000320u, ImmutableString("atomicCompSwap(00E00E00E").mangledNameHash());
+ ASSERT_EQ(0x00000321u, ImmutableString("atomicCompSwap(00E00E00E").mangledNameHash());
ASSERT_EQ(0x000001f8u, ImmutableString("atomicCompSwap(00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000199u, ImmutableString("imageSize(00y").mangledNameHash());
ASSERT_EQ(0x0000019bu, ImmutableString("imageSize(00z").mangledNameHash());
- ASSERT_EQ(0x0000028bu, ImmutableString("imageSize(01A").mangledNameHash());
- ASSERT_EQ(0x00000221u, ImmutableString("imageSize(01B").mangledNameHash());
- ASSERT_EQ(0x000002d9u, ImmutableString("imageSize(01C").mangledNameHash());
- ASSERT_EQ(0x00000297u, ImmutableString("imageSize(01D").mangledNameHash());
- ASSERT_EQ(0x00000287u, ImmutableString("imageSize(01E").mangledNameHash());
- ASSERT_EQ(0x0000028eu, ImmutableString("imageSize(01F").mangledNameHash());
- ASSERT_EQ(0x000002ddu, ImmutableString("imageSize(01G").mangledNameHash());
- ASSERT_EQ(0x000002d2u, ImmutableString("imageSize(01H").mangledNameHash());
- ASSERT_EQ(0x000002d3u, ImmutableString("imageSize(01I").mangledNameHash());
- ASSERT_EQ(0x000002d1u, ImmutableString("imageSize(01J").mangledNameHash());
- ASSERT_EQ(0x00000260u, ImmutableString("imageLoad(00y10D").mangledNameHash());
+ ASSERT_EQ(0x0000028cu, ImmutableString("imageSize(01A").mangledNameHash());
+ ASSERT_EQ(0x00000222u, ImmutableString("imageSize(01B").mangledNameHash());
+ ASSERT_EQ(0x000002dau, ImmutableString("imageSize(01C").mangledNameHash());
+ ASSERT_EQ(0x00000298u, ImmutableString("imageSize(01D").mangledNameHash());
+ ASSERT_EQ(0x00000288u, ImmutableString("imageSize(01E").mangledNameHash());
+ ASSERT_EQ(0x0000028fu, ImmutableString("imageSize(01F").mangledNameHash());
+ ASSERT_EQ(0x000002deu, ImmutableString("imageSize(01G").mangledNameHash());
+ ASSERT_EQ(0x000002d3u, ImmutableString("imageSize(01H").mangledNameHash());
+ ASSERT_EQ(0x000002d4u, ImmutableString("imageSize(01I").mangledNameHash());
+ ASSERT_EQ(0x000002d2u, ImmutableString("imageSize(01J").mangledNameHash());
+ ASSERT_EQ(0x00000261u, ImmutableString("imageLoad(00y10D").mangledNameHash());
ASSERT_EQ(0x000001f0u, ImmutableString("imageLoad(00z10D").mangledNameHash());
ASSERT_EQ(0x00000057u, ImmutableString("imageLoad(01A10D").mangledNameHash());
- ASSERT_EQ(0x000002f6u, ImmutableString("imageLoad(01B20D").mangledNameHash());
- ASSERT_EQ(0x000002d0u, ImmutableString("imageLoad(01C20D").mangledNameHash());
- ASSERT_EQ(0x00000353u, ImmutableString("imageLoad(01D20D").mangledNameHash());
- ASSERT_EQ(0x000002f0u, ImmutableString("imageLoad(01E20D").mangledNameHash());
+ ASSERT_EQ(0x000002f7u, ImmutableString("imageLoad(01B20D").mangledNameHash());
+ ASSERT_EQ(0x000002d1u, ImmutableString("imageLoad(01C20D").mangledNameHash());
+ ASSERT_EQ(0x00000354u, ImmutableString("imageLoad(01D20D").mangledNameHash());
+ ASSERT_EQ(0x000002f1u, ImmutableString("imageLoad(01E20D").mangledNameHash());
ASSERT_EQ(0x0000003au, ImmutableString("imageLoad(01F20D").mangledNameHash());
ASSERT_EQ(0x000001f6u, ImmutableString("imageLoad(01G20D").mangledNameHash());
ASSERT_EQ(0x000000d2u, ImmutableString("imageLoad(01H20D").mangledNameHash());
ASSERT_EQ(0x000000cfu, ImmutableString("imageLoad(01I20D").mangledNameHash());
- ASSERT_EQ(0x00000208u, ImmutableString("imageLoad(01J20D").mangledNameHash());
+ ASSERT_EQ(0x00000209u, ImmutableString("imageLoad(01J20D").mangledNameHash());
ASSERT_EQ(0x000001e2u, ImmutableString("imageStore(00y10D30B").mangledNameHash());
ASSERT_EQ(0x000000f7u, ImmutableString("imageStore(00z10D30D").mangledNameHash());
ASSERT_EQ(0x00000116u, ImmutableString("imageStore(01A10D30E").mangledNameHash());
ASSERT_EQ(0x00000080u, ImmutableString("imageStore(01B20D30B").mangledNameHash());
- ASSERT_EQ(0x000002e5u, ImmutableString("imageStore(01C20D30D").mangledNameHash());
- ASSERT_EQ(0x00000327u, ImmutableString("imageStore(01D20D30E").mangledNameHash());
+ ASSERT_EQ(0x000002e6u, ImmutableString("imageStore(01C20D30D").mangledNameHash());
+ ASSERT_EQ(0x00000328u, ImmutableString("imageStore(01D20D30E").mangledNameHash());
ASSERT_EQ(0x000001c1u, ImmutableString("imageStore(01E20D30B").mangledNameHash());
- ASSERT_EQ(0x00000385u, ImmutableString("imageStore(01F20D30D").mangledNameHash());
+ ASSERT_EQ(0x00000386u, ImmutableString("imageStore(01F20D30D").mangledNameHash());
ASSERT_EQ(0x000000d5u, ImmutableString("imageStore(01G20D30E").mangledNameHash());
- ASSERT_EQ(0x000002c4u, ImmutableString("imageStore(01H20D30B").mangledNameHash());
+ ASSERT_EQ(0x000002c5u, ImmutableString("imageStore(01H20D30B").mangledNameHash());
ASSERT_EQ(0x0000005cu, ImmutableString("imageStore(01I20D30D").mangledNameHash());
ASSERT_EQ(0x0000010bu, ImmutableString("imageStore(01J20D30E").mangledNameHash());
ASSERT_EQ(0x000001fdu, ImmutableString("memoryBarrier(").mangledNameHash());
ASSERT_EQ(0x00000065u, ImmutableString("memoryBarrierAtomicCounter(").mangledNameHash());
- ASSERT_EQ(0x000002bfu, ImmutableString("memoryBarrierBuffer(").mangledNameHash());
- ASSERT_EQ(0x0000035fu, ImmutableString("memoryBarrierImage(").mangledNameHash());
+ ASSERT_EQ(0x000002c0u, ImmutableString("memoryBarrierBuffer(").mangledNameHash());
+ ASSERT_EQ(0x00000360u, ImmutableString("memoryBarrierImage(").mangledNameHash());
ASSERT_EQ(0x00000121u, ImmutableString("barrier(").mangledNameHash());
ASSERT_EQ(0x000001edu, ImmutableString("memoryBarrierShared(").mangledNameHash());
ASSERT_EQ(0x00000054u, ImmutableString("groupMemoryBarrier(").mangledNameHash());
- ASSERT_EQ(0x00000361u, ImmutableString("EmitVertex(").mangledNameHash());
+ ASSERT_EQ(0x00000362u, ImmutableString("EmitVertex(").mangledNameHash());
ASSERT_EQ(0x00000034u, ImmutableString("EndPrimitive(").mangledNameHash());
ASSERT_EQ(0x00000151u, ImmutableString("gl_DepthRangeParameters").mangledNameHash());
ASSERT_EQ(0x00000084u, ImmutableString("gl_DepthRange").mangledNameHash());
- ASSERT_EQ(0x0000030fu, ImmutableString("gl_MaxVertexAttribs").mangledNameHash());
- ASSERT_EQ(0x00000348u, ImmutableString("gl_MaxVertexUniformVectors").mangledNameHash());
+ ASSERT_EQ(0x00000310u, ImmutableString("gl_MaxVertexAttribs").mangledNameHash());
+ ASSERT_EQ(0x00000349u, ImmutableString("gl_MaxVertexUniformVectors").mangledNameHash());
ASSERT_EQ(0x00000043u, ImmutableString("gl_MaxVertexTextureImageUnits").mangledNameHash());
ASSERT_EQ(0x0000014du, ImmutableString("gl_MaxCombinedTextureImageUnits").mangledNameHash());
- ASSERT_EQ(0x0000031du, ImmutableString("gl_MaxTextureImageUnits").mangledNameHash());
- ASSERT_EQ(0x000002e8u, ImmutableString("gl_MaxFragmentUniformVectors").mangledNameHash());
- ASSERT_EQ(0x00000344u, ImmutableString("gl_MaxVaryingVectors").mangledNameHash());
+ ASSERT_EQ(0x0000031eu, ImmutableString("gl_MaxTextureImageUnits").mangledNameHash());
+ ASSERT_EQ(0x000002e9u, ImmutableString("gl_MaxFragmentUniformVectors").mangledNameHash());
+ ASSERT_EQ(0x00000345u, ImmutableString("gl_MaxVaryingVectors").mangledNameHash());
ASSERT_EQ(0x000000e0u, ImmutableString("gl_MaxDrawBuffers").mangledNameHash());
- ASSERT_EQ(0x00000272u, ImmutableString("gl_MaxDualSourceDrawBuffersEXT").mangledNameHash());
+ ASSERT_EQ(0x00000273u, ImmutableString("gl_MaxDualSourceDrawBuffersEXT").mangledNameHash());
ASSERT_EQ(0x00000088u, ImmutableString("gl_MaxVertexOutputVectors").mangledNameHash());
- ASSERT_EQ(0x00000369u, ImmutableString("gl_MaxFragmentInputVectors").mangledNameHash());
+ ASSERT_EQ(0x0000036au, ImmutableString("gl_MaxFragmentInputVectors").mangledNameHash());
ASSERT_EQ(0x0000002eu, ImmutableString("gl_MinProgramTexelOffset").mangledNameHash());
- ASSERT_EQ(0x00000257u, ImmutableString("gl_MaxProgramTexelOffset").mangledNameHash());
+ ASSERT_EQ(0x00000258u, ImmutableString("gl_MaxProgramTexelOffset").mangledNameHash());
ASSERT_EQ(0x0000008cu, ImmutableString("gl_MaxImageUnits").mangledNameHash());
ASSERT_EQ(0x000001d3u, ImmutableString("gl_MaxVertexImageUniforms").mangledNameHash());
ASSERT_EQ(0x000000a6u, ImmutableString("gl_MaxFragmentImageUniforms").mangledNameHash());
@@ -904,53 +904,54 @@
ImmutableString("gl_MaxCombinedShaderOutputResources").mangledNameHash());
ASSERT_EQ(0x000000e2u, ImmutableString("gl_MaxComputeWorkGroupCount").mangledNameHash());
ASSERT_EQ(0x00000148u, ImmutableString("gl_MaxComputeWorkGroupSize").mangledNameHash());
- ASSERT_EQ(0x000002bdu, ImmutableString("gl_MaxComputeUniformComponents").mangledNameHash());
+ ASSERT_EQ(0x000002beu, ImmutableString("gl_MaxComputeUniformComponents").mangledNameHash());
ASSERT_EQ(0x0000010du, ImmutableString("gl_MaxComputeTextureImageUnits").mangledNameHash());
- ASSERT_EQ(0x0000037bu, ImmutableString("gl_MaxComputeAtomicCounters").mangledNameHash());
+ ASSERT_EQ(0x0000037cu, ImmutableString("gl_MaxComputeAtomicCounters").mangledNameHash());
ASSERT_EQ(0x000000beu, ImmutableString("gl_MaxComputeAtomicCounterBuffers").mangledNameHash());
- ASSERT_EQ(0x0000037du, ImmutableString("gl_MaxVertexAtomicCounters").mangledNameHash());
- ASSERT_EQ(0x00000283u, ImmutableString("gl_MaxFragmentAtomicCounters").mangledNameHash());
+ ASSERT_EQ(0x0000037eu, ImmutableString("gl_MaxVertexAtomicCounters").mangledNameHash());
+ ASSERT_EQ(0x00000284u, ImmutableString("gl_MaxFragmentAtomicCounters").mangledNameHash());
ASSERT_EQ(0x00000113u, ImmutableString("gl_MaxCombinedAtomicCounters").mangledNameHash());
ASSERT_EQ(0x00000006u, ImmutableString("gl_MaxAtomicCounterBindings").mangledNameHash());
ASSERT_EQ(0x0000005du, ImmutableString("gl_MaxVertexAtomicCounterBuffers").mangledNameHash());
ASSERT_EQ(0x000001d6u, ImmutableString("gl_MaxFragmentAtomicCounterBuffers").mangledNameHash());
- ASSERT_EQ(0x0000022bu, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").mangledNameHash());
- ASSERT_EQ(0x0000028fu, ImmutableString("gl_MaxAtomicCounterBufferSize").mangledNameHash());
- ASSERT_EQ(0x00000244u, ImmutableString("gl_MaxGeometryInputComponents").mangledNameHash());
+ ASSERT_EQ(0x0000022cu, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").mangledNameHash());
+ ASSERT_EQ(0x00000290u, ImmutableString("gl_MaxAtomicCounterBufferSize").mangledNameHash());
+ ASSERT_EQ(0x00000245u, ImmutableString("gl_MaxGeometryInputComponents").mangledNameHash());
ASSERT_EQ(0x0000003fu, ImmutableString("gl_MaxGeometryOutputComponents").mangledNameHash());
- ASSERT_EQ(0x0000025fu, ImmutableString("gl_MaxGeometryImageUniforms").mangledNameHash());
+ ASSERT_EQ(0x00000260u, ImmutableString("gl_MaxGeometryImageUniforms").mangledNameHash());
ASSERT_EQ(0x00000040u, ImmutableString("gl_MaxGeometryTextureImageUnits").mangledNameHash());
ASSERT_EQ(0x00000029u, ImmutableString("gl_MaxGeometryOutputVertices").mangledNameHash());
- ASSERT_EQ(0x000002a2u,
+ ASSERT_EQ(0x000002a3u,
ImmutableString("gl_MaxGeometryTotalOutputComponents").mangledNameHash());
ASSERT_EQ(0x00000122u, ImmutableString("gl_MaxGeometryUniformComponents").mangledNameHash());
ASSERT_EQ(0x000001e3u, ImmutableString("gl_MaxGeometryAtomicCounters").mangledNameHash());
ASSERT_EQ(0x000000fdu, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").mangledNameHash());
ASSERT_EQ(0x000000a2u, ImmutableString("gl_FragCoord").mangledNameHash());
- ASSERT_EQ(0x000002e2u, ImmutableString("gl_FrontFacing").mangledNameHash());
+ ASSERT_EQ(0x000002e3u, ImmutableString("gl_FrontFacing").mangledNameHash());
ASSERT_EQ(0x00000118u, ImmutableString("gl_PointCoord").mangledNameHash());
ASSERT_EQ(0x00000076u, ImmutableString("gl_FragColor").mangledNameHash());
- ASSERT_EQ(0x000002f5u, ImmutableString("gl_FragData").mangledNameHash());
+ ASSERT_EQ(0x000002f6u, ImmutableString("gl_FragData").mangledNameHash());
ASSERT_EQ(0x00000176u, ImmutableString("gl_FragDepth").mangledNameHash());
- ASSERT_EQ(0x000002e3u, ImmutableString("gl_SecondaryFragColorEXT").mangledNameHash());
+ ASSERT_EQ(0x00000200u, ImmutableString("gl_HelperInvocation").mangledNameHash());
+ ASSERT_EQ(0x000002e4u, ImmutableString("gl_SecondaryFragColorEXT").mangledNameHash());
ASSERT_EQ(0x000001cbu, ImmutableString("gl_SecondaryFragDataEXT").mangledNameHash());
ASSERT_EQ(0x00000169u, ImmutableString("gl_FragDepthEXT").mangledNameHash());
ASSERT_EQ(0x0000014au, ImmutableString("gl_LastFragData").mangledNameHash());
ASSERT_EQ(0x00000163u, ImmutableString("gl_LastFragColor").mangledNameHash());
- ASSERT_EQ(0x00000300u, ImmutableString("gl_LastFragColorARM").mangledNameHash());
+ ASSERT_EQ(0x00000301u, ImmutableString("gl_LastFragColorARM").mangledNameHash());
ASSERT_EQ(0x00000003u, ImmutableString("gl_PrimitiveID").mangledNameHash());
ASSERT_EQ(0x0000000eu, ImmutableString("gl_Layer").mangledNameHash());
- ASSERT_EQ(0x0000031eu, ImmutableString("gl_Position").mangledNameHash());
- ASSERT_EQ(0x00000374u, ImmutableString("gl_PointSize").mangledNameHash());
+ ASSERT_EQ(0x0000031fu, ImmutableString("gl_Position").mangledNameHash());
+ ASSERT_EQ(0x00000375u, ImmutableString("gl_PointSize").mangledNameHash());
ASSERT_EQ(0x000001d1u, ImmutableString("gl_InstanceID").mangledNameHash());
- ASSERT_EQ(0x00000308u, ImmutableString("gl_VertexID").mangledNameHash());
- ASSERT_EQ(0x000003a4u, ImmutableString("gl_DrawID").mangledNameHash());
- ASSERT_EQ(0x00000296u, ImmutableString("gl_BaseVertex").mangledNameHash());
- ASSERT_EQ(0x00000310u, ImmutableString("gl_BaseInstance").mangledNameHash());
+ ASSERT_EQ(0x00000309u, ImmutableString("gl_VertexID").mangledNameHash());
+ ASSERT_EQ(0x000003a5u, ImmutableString("gl_DrawID").mangledNameHash());
+ ASSERT_EQ(0x00000297u, ImmutableString("gl_BaseVertex").mangledNameHash());
+ ASSERT_EQ(0x00000311u, ImmutableString("gl_BaseInstance").mangledNameHash());
ASSERT_EQ(0x0000000au, ImmutableString("angle_BaseVertex").mangledNameHash());
- ASSERT_EQ(0x0000031bu, ImmutableString("angle_BaseInstance").mangledNameHash());
- ASSERT_EQ(0x000002b7u, ImmutableString("gl_NumWorkGroups").mangledNameHash());
- ASSERT_EQ(0x00000209u, ImmutableString("gl_WorkGroupSize").mangledNameHash());
+ ASSERT_EQ(0x0000031cu, ImmutableString("angle_BaseInstance").mangledNameHash());
+ ASSERT_EQ(0x000002b8u, ImmutableString("gl_NumWorkGroups").mangledNameHash());
+ ASSERT_EQ(0x0000020au, ImmutableString("gl_WorkGroupSize").mangledNameHash());
ASSERT_EQ(0x000001d7u, ImmutableString("gl_WorkGroupID").mangledNameHash());
ASSERT_EQ(0x0000016fu, ImmutableString("gl_LocalInvocationID").mangledNameHash());
ASSERT_EQ(0x000001ebu, ImmutableString("gl_GlobalInvocationID").mangledNameHash());
@@ -959,7 +960,7 @@
ASSERT_EQ(0x00000142u, ImmutableString("gl_InvocationID").mangledNameHash());
ASSERT_EQ(0x000001feu, ImmutableString("gl_PerVertex").mangledNameHash());
ASSERT_EQ(0x000001c6u, ImmutableString("gl_in").mangledNameHash());
- ASSERT_EQ(0x00000201u, ImmutableString("gl_ViewID_OVR").mangledNameHash());
+ ASSERT_EQ(0x00000202u, ImmutableString("gl_ViewID_OVR").mangledNameHash());
ASSERT_EQ(0x0000001cu, ImmutableString("radians").unmangledNameHash());
ASSERT_EQ(0x0000000fu, ImmutableString("degrees").unmangledNameHash());
ASSERT_EQ(0x0000007du, ImmutableString("sin").unmangledNameHash());
diff --git a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_autogen.cpp b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
index 0790030..3b7ba24 100644
--- a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
@@ -20,65 +20,65 @@
ASSERT_EQ(0x000000cau, ImmutableString("radians(10B").mangledNameHash());
ASSERT_EQ(0x000002c8u, ImmutableString("radians(20B").mangledNameHash());
ASSERT_EQ(0x00000222u, ImmutableString("radians(30B").mangledNameHash());
- ASSERT_EQ(0x00000765u, ImmutableString("degrees(00B").mangledNameHash());
- ASSERT_EQ(0x00000812u, ImmutableString("degrees(10B").mangledNameHash());
+ ASSERT_EQ(0x00000766u, ImmutableString("degrees(00B").mangledNameHash());
+ ASSERT_EQ(0x00000813u, ImmutableString("degrees(10B").mangledNameHash());
ASSERT_EQ(0x00000039u, ImmutableString("degrees(20B").mangledNameHash());
ASSERT_EQ(0x000000d9u, ImmutableString("degrees(30B").mangledNameHash());
- ASSERT_EQ(0x00000623u, ImmutableString("sin(00B").mangledNameHash());
- ASSERT_EQ(0x00000578u, ImmutableString("sin(10B").mangledNameHash());
- ASSERT_EQ(0x000007cau, ImmutableString("sin(20B").mangledNameHash());
+ ASSERT_EQ(0x00000624u, ImmutableString("sin(00B").mangledNameHash());
+ ASSERT_EQ(0x00000579u, ImmutableString("sin(10B").mangledNameHash());
+ ASSERT_EQ(0x000007cbu, ImmutableString("sin(20B").mangledNameHash());
ASSERT_EQ(0x000000a6u, ImmutableString("sin(30B").mangledNameHash());
ASSERT_EQ(0x00000141u, ImmutableString("cos(00B").mangledNameHash());
ASSERT_EQ(0x000001eeu, ImmutableString("cos(10B").mangledNameHash());
- ASSERT_EQ(0x00000850u, ImmutableString("cos(20B").mangledNameHash());
+ ASSERT_EQ(0x00000851u, ImmutableString("cos(20B").mangledNameHash());
ASSERT_EQ(0x0000009eu, ImmutableString("cos(30B").mangledNameHash());
- ASSERT_EQ(0x00000783u, ImmutableString("tan(00B").mangledNameHash());
- ASSERT_EQ(0x00000823u, ImmutableString("tan(10B").mangledNameHash());
+ ASSERT_EQ(0x00000784u, ImmutableString("tan(00B").mangledNameHash());
+ ASSERT_EQ(0x00000824u, ImmutableString("tan(10B").mangledNameHash());
ASSERT_EQ(0x00000438u, ImmutableString("tan(20B").mangledNameHash());
- ASSERT_EQ(0x000006ecu, ImmutableString("tan(30B").mangledNameHash());
+ ASSERT_EQ(0x000006edu, ImmutableString("tan(30B").mangledNameHash());
ASSERT_EQ(0x00000157u, ImmutableString("asin(00B").mangledNameHash());
ASSERT_EQ(0x0000020bu, ImmutableString("asin(10B").mangledNameHash());
- ASSERT_EQ(0x00000676u, ImmutableString("asin(20B").mangledNameHash());
- ASSERT_EQ(0x0000070fu, ImmutableString("asin(30B").mangledNameHash());
+ ASSERT_EQ(0x00000677u, ImmutableString("asin(20B").mangledNameHash());
+ ASSERT_EQ(0x00000710u, ImmutableString("asin(30B").mangledNameHash());
ASSERT_EQ(0x0000026cu, ImmutableString("acos(00B").mangledNameHash());
ASSERT_EQ(0x000001b4u, ImmutableString("acos(10B").mangledNameHash());
- ASSERT_EQ(0x000005beu, ImmutableString("acos(20B").mangledNameHash());
+ ASSERT_EQ(0x000005bfu, ImmutableString("acos(20B").mangledNameHash());
ASSERT_EQ(0x00000520u, ImmutableString("acos(30B").mangledNameHash());
- ASSERT_EQ(0x00000776u, ImmutableString("atan(00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000777u, ImmutableString("atan(00B00B").mangledNameHash());
ASSERT_EQ(0x00000026u, ImmutableString("atan(10B10B").mangledNameHash());
ASSERT_EQ(0x0000055cu, ImmutableString("atan(20B20B").mangledNameHash());
ASSERT_EQ(0x00000506u, ImmutableString("atan(30B30B").mangledNameHash());
ASSERT_EQ(0x0000011bu, ImmutableString("atan(00B").mangledNameHash());
- ASSERT_EQ(0x000006a6u, ImmutableString("atan(10B").mangledNameHash());
+ ASSERT_EQ(0x000006a7u, ImmutableString("atan(10B").mangledNameHash());
ASSERT_EQ(0x00000280u, ImmutableString("atan(20B").mangledNameHash());
ASSERT_EQ(0x000001d3u, ImmutableString("atan(30B").mangledNameHash());
ASSERT_EQ(0x0000020cu, ImmutableString("sinh(00B").mangledNameHash());
- ASSERT_EQ(0x00000814u, ImmutableString("sinh(10B").mangledNameHash());
+ ASSERT_EQ(0x00000815u, ImmutableString("sinh(10B").mangledNameHash());
ASSERT_EQ(0x00000345u, ImmutableString("sinh(20B").mangledNameHash());
ASSERT_EQ(0x000002b9u, ImmutableString("sinh(30B").mangledNameHash());
- ASSERT_EQ(0x000005c6u, ImmutableString("cosh(00B").mangledNameHash());
- ASSERT_EQ(0x00000803u, ImmutableString("cosh(10B").mangledNameHash());
+ ASSERT_EQ(0x000005c7u, ImmutableString("cosh(00B").mangledNameHash());
+ ASSERT_EQ(0x00000804u, ImmutableString("cosh(10B").mangledNameHash());
ASSERT_EQ(0x0000005fu, ImmutableString("cosh(20B").mangledNameHash());
- ASSERT_EQ(0x000005aau, ImmutableString("cosh(30B").mangledNameHash());
- ASSERT_EQ(0x00000693u, ImmutableString("tanh(00B").mangledNameHash());
- ASSERT_EQ(0x00000727u, ImmutableString("tanh(10B").mangledNameHash());
- ASSERT_EQ(0x000007c8u, ImmutableString("tanh(20B").mangledNameHash());
+ ASSERT_EQ(0x000005abu, ImmutableString("cosh(30B").mangledNameHash());
+ ASSERT_EQ(0x00000694u, ImmutableString("tanh(00B").mangledNameHash());
+ ASSERT_EQ(0x00000728u, ImmutableString("tanh(10B").mangledNameHash());
+ ASSERT_EQ(0x000007c9u, ImmutableString("tanh(20B").mangledNameHash());
ASSERT_EQ(0x00000009u, ImmutableString("tanh(30B").mangledNameHash());
- ASSERT_EQ(0x000007bcu, ImmutableString("asinh(00B").mangledNameHash());
- ASSERT_EQ(0x00000853u, ImmutableString("asinh(10B").mangledNameHash());
+ ASSERT_EQ(0x000007bdu, ImmutableString("asinh(00B").mangledNameHash());
+ ASSERT_EQ(0x00000854u, ImmutableString("asinh(10B").mangledNameHash());
ASSERT_EQ(0x000002bcu, ImmutableString("asinh(20B").mangledNameHash());
ASSERT_EQ(0x0000034cu, ImmutableString("asinh(30B").mangledNameHash());
ASSERT_EQ(0x000000e2u, ImmutableString("acosh(00B").mangledNameHash());
- ASSERT_EQ(0x000006c7u, ImmutableString("acosh(10B").mangledNameHash());
+ ASSERT_EQ(0x000006c8u, ImmutableString("acosh(10B").mangledNameHash());
ASSERT_EQ(0x00000243u, ImmutableString("acosh(20B").mangledNameHash());
ASSERT_EQ(0x00000198u, ImmutableString("acosh(30B").mangledNameHash());
ASSERT_EQ(0x00000061u, ImmutableString("atanh(00B").mangledNameHash());
ASSERT_EQ(0x00000244u, ImmutableString("atanh(10B").mangledNameHash());
- ASSERT_EQ(0x000005e7u, ImmutableString("atanh(20B").mangledNameHash());
+ ASSERT_EQ(0x000005e8u, ImmutableString("atanh(20B").mangledNameHash());
ASSERT_EQ(0x00000538u, ImmutableString("atanh(30B").mangledNameHash());
ASSERT_EQ(0x00000533u, ImmutableString("pow(00B00B").mangledNameHash());
ASSERT_EQ(0x00000288u, ImmutableString("pow(10B10B").mangledNameHash());
- ASSERT_EQ(0x000005ffu, ImmutableString("pow(20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000600u, ImmutableString("pow(20B20B").mangledNameHash());
ASSERT_EQ(0x00000350u, ImmutableString("pow(30B30B").mangledNameHash());
ASSERT_EQ(0x000003dcu, ImmutableString("exp(00B").mangledNameHash());
ASSERT_EQ(0x0000047fu, ImmutableString("exp(10B").mangledNameHash());
@@ -88,13 +88,13 @@
ASSERT_EQ(0x000000e3u, ImmutableString("log(10B").mangledNameHash());
ASSERT_EQ(0x000002d9u, ImmutableString("log(20B").mangledNameHash());
ASSERT_EQ(0x000004b6u, ImmutableString("log(30B").mangledNameHash());
- ASSERT_EQ(0x0000065bu, ImmutableString("exp2(00B").mangledNameHash());
- ASSERT_EQ(0x000006efu, ImmutableString("exp2(10B").mangledNameHash());
+ ASSERT_EQ(0x0000065cu, ImmutableString("exp2(00B").mangledNameHash());
+ ASSERT_EQ(0x000006f0u, ImmutableString("exp2(10B").mangledNameHash());
ASSERT_EQ(0x00000510u, ImmutableString("exp2(20B").mangledNameHash());
- ASSERT_EQ(0x000005a3u, ImmutableString("exp2(30B").mangledNameHash());
- ASSERT_EQ(0x00000726u, ImmutableString("log2(00B").mangledNameHash());
- ASSERT_EQ(0x000006b2u, ImmutableString("log2(10B").mangledNameHash());
- ASSERT_EQ(0x0000060au, ImmutableString("log2(20B").mangledNameHash());
+ ASSERT_EQ(0x000005a4u, ImmutableString("exp2(30B").mangledNameHash());
+ ASSERT_EQ(0x00000727u, ImmutableString("log2(00B").mangledNameHash());
+ ASSERT_EQ(0x000006b3u, ImmutableString("log2(10B").mangledNameHash());
+ ASSERT_EQ(0x0000060bu, ImmutableString("log2(20B").mangledNameHash());
ASSERT_EQ(0x00000321u, ImmutableString("log2(30B").mangledNameHash());
ASSERT_EQ(0x00000332u, ImmutableString("sqrt(00B").mangledNameHash());
ASSERT_EQ(0x0000029fu, ImmutableString("sqrt(10B").mangledNameHash());
@@ -105,74 +105,74 @@
ASSERT_EQ(0x00000484u, ImmutableString("sqrt(20C").mangledNameHash());
ASSERT_EQ(0x000003d9u, ImmutableString("sqrt(30C").mangledNameHash());
ASSERT_EQ(0x00000042u, ImmutableString("inversesqrt(00B").mangledNameHash());
- ASSERT_EQ(0x000007f2u, ImmutableString("inversesqrt(10B").mangledNameHash());
+ ASSERT_EQ(0x000007f3u, ImmutableString("inversesqrt(10B").mangledNameHash());
ASSERT_EQ(0x0000015fu, ImmutableString("inversesqrt(20B").mangledNameHash());
ASSERT_EQ(0x000000dau, ImmutableString("inversesqrt(30B").mangledNameHash());
ASSERT_EQ(0x00000041u, ImmutableString("inversesqrt(00C").mangledNameHash());
- ASSERT_EQ(0x000007f3u, ImmutableString("inversesqrt(10C").mangledNameHash());
+ ASSERT_EQ(0x000007f4u, ImmutableString("inversesqrt(10C").mangledNameHash());
ASSERT_EQ(0x0000015eu, ImmutableString("inversesqrt(20C").mangledNameHash());
ASSERT_EQ(0x000000dbu, ImmutableString("inversesqrt(30C").mangledNameHash());
ASSERT_EQ(0x00000382u, ImmutableString("abs(00B").mangledNameHash());
ASSERT_EQ(0x000002f3u, ImmutableString("abs(10B").mangledNameHash());
ASSERT_EQ(0x0000025fu, ImmutableString("abs(20B").mangledNameHash());
- ASSERT_EQ(0x000005f2u, ImmutableString("abs(30B").mangledNameHash());
+ ASSERT_EQ(0x000005f3u, ImmutableString("abs(30B").mangledNameHash());
ASSERT_EQ(0x00000380u, ImmutableString("abs(00D").mangledNameHash());
ASSERT_EQ(0x000002f2u, ImmutableString("abs(10D").mangledNameHash());
ASSERT_EQ(0x0000025du, ImmutableString("abs(20D").mangledNameHash());
- ASSERT_EQ(0x000007f4u, ImmutableString("abs(30D").mangledNameHash());
+ ASSERT_EQ(0x000007f5u, ImmutableString("abs(30D").mangledNameHash());
ASSERT_EQ(0x00000381u, ImmutableString("abs(00C").mangledNameHash());
ASSERT_EQ(0x000002f4u, ImmutableString("abs(10C").mangledNameHash());
ASSERT_EQ(0x0000025eu, ImmutableString("abs(20C").mangledNameHash());
- ASSERT_EQ(0x000007f6u, ImmutableString("abs(30C").mangledNameHash());
+ ASSERT_EQ(0x000007f7u, ImmutableString("abs(30C").mangledNameHash());
ASSERT_EQ(0x000000d1u, ImmutableString("sign(00B").mangledNameHash());
- ASSERT_EQ(0x00000653u, ImmutableString("sign(10B").mangledNameHash());
+ ASSERT_EQ(0x00000654u, ImmutableString("sign(10B").mangledNameHash());
ASSERT_EQ(0x000001e0u, ImmutableString("sign(20B").mangledNameHash());
ASSERT_EQ(0x000000f2u, ImmutableString("sign(30B").mangledNameHash());
- ASSERT_EQ(0x000005cbu, ImmutableString("sign(00D").mangledNameHash());
- ASSERT_EQ(0x00000807u, ImmutableString("sign(10D").mangledNameHash());
+ ASSERT_EQ(0x000005ccu, ImmutableString("sign(00D").mangledNameHash());
+ ASSERT_EQ(0x00000808u, ImmutableString("sign(10D").mangledNameHash());
ASSERT_EQ(0x00000060u, ImmutableString("sign(20D").mangledNameHash());
ASSERT_EQ(0x000000f4u, ImmutableString("sign(30D").mangledNameHash());
- ASSERT_EQ(0x000005c5u, ImmutableString("sign(00C").mangledNameHash());
- ASSERT_EQ(0x00000804u, ImmutableString("sign(10C").mangledNameHash());
+ ASSERT_EQ(0x000005c6u, ImmutableString("sign(00C").mangledNameHash());
+ ASSERT_EQ(0x00000805u, ImmutableString("sign(10C").mangledNameHash());
ASSERT_EQ(0x0000005eu, ImmutableString("sign(20C").mangledNameHash());
ASSERT_EQ(0x000000f3u, ImmutableString("sign(30C").mangledNameHash());
ASSERT_EQ(0x0000043au, ImmutableString("floor(00B").mangledNameHash());
ASSERT_EQ(0x00000136u, ImmutableString("floor(10B").mangledNameHash());
- ASSERT_EQ(0x00000588u, ImmutableString("floor(20B").mangledNameHash());
+ ASSERT_EQ(0x00000589u, ImmutableString("floor(20B").mangledNameHash());
ASSERT_EQ(0x000004f0u, ImmutableString("floor(30B").mangledNameHash());
ASSERT_EQ(0x00000439u, ImmutableString("floor(00C").mangledNameHash());
ASSERT_EQ(0x00000137u, ImmutableString("floor(10C").mangledNameHash());
- ASSERT_EQ(0x00000587u, ImmutableString("floor(20C").mangledNameHash());
+ ASSERT_EQ(0x00000588u, ImmutableString("floor(20C").mangledNameHash());
ASSERT_EQ(0x000004f1u, ImmutableString("floor(30C").mangledNameHash());
- ASSERT_EQ(0x000006e4u, ImmutableString("trunc(00B").mangledNameHash());
- ASSERT_EQ(0x00000647u, ImmutableString("trunc(10B").mangledNameHash());
- ASSERT_EQ(0x00000820u, ImmutableString("trunc(20B").mangledNameHash());
- ASSERT_EQ(0x0000077au, ImmutableString("trunc(30B").mangledNameHash());
- ASSERT_EQ(0x00000795u, ImmutableString("trunc(00C").mangledNameHash());
- ASSERT_EQ(0x00000648u, ImmutableString("trunc(10C").mangledNameHash());
- ASSERT_EQ(0x0000081fu, ImmutableString("trunc(20C").mangledNameHash());
- ASSERT_EQ(0x0000077bu, ImmutableString("trunc(30C").mangledNameHash());
+ ASSERT_EQ(0x000006e5u, ImmutableString("trunc(00B").mangledNameHash());
+ ASSERT_EQ(0x00000648u, ImmutableString("trunc(10B").mangledNameHash());
+ ASSERT_EQ(0x00000821u, ImmutableString("trunc(20B").mangledNameHash());
+ ASSERT_EQ(0x0000077bu, ImmutableString("trunc(30B").mangledNameHash());
+ ASSERT_EQ(0x00000796u, ImmutableString("trunc(00C").mangledNameHash());
+ ASSERT_EQ(0x00000649u, ImmutableString("trunc(10C").mangledNameHash());
+ ASSERT_EQ(0x00000820u, ImmutableString("trunc(20C").mangledNameHash());
+ ASSERT_EQ(0x0000077cu, ImmutableString("trunc(30C").mangledNameHash());
ASSERT_EQ(0x00000089u, ImmutableString("round(00B").mangledNameHash());
- ASSERT_EQ(0x0000082eu, ImmutableString("round(10B").mangledNameHash());
+ ASSERT_EQ(0x0000082fu, ImmutableString("round(10B").mangledNameHash());
ASSERT_EQ(0x0000038eu, ImmutableString("round(20B").mangledNameHash());
- ASSERT_EQ(0x000006f5u, ImmutableString("round(30B").mangledNameHash());
+ ASSERT_EQ(0x000006f6u, ImmutableString("round(30B").mangledNameHash());
ASSERT_EQ(0x00000088u, ImmutableString("round(00C").mangledNameHash());
- ASSERT_EQ(0x0000082fu, ImmutableString("round(10C").mangledNameHash());
+ ASSERT_EQ(0x00000830u, ImmutableString("round(10C").mangledNameHash());
ASSERT_EQ(0x0000038bu, ImmutableString("round(20C").mangledNameHash());
- ASSERT_EQ(0x000006f6u, ImmutableString("round(30C").mangledNameHash());
- ASSERT_EQ(0x000005e5u, ImmutableString("roundEven(00B").mangledNameHash());
+ ASSERT_EQ(0x000006f7u, ImmutableString("round(30C").mangledNameHash());
+ ASSERT_EQ(0x000005e6u, ImmutableString("roundEven(00B").mangledNameHash());
ASSERT_EQ(0x00000536u, ImmutableString("roundEven(10B").mangledNameHash());
ASSERT_EQ(0x000002dfu, ImmutableString("roundEven(20B").mangledNameHash());
ASSERT_EQ(0x00000241u, ImmutableString("roundEven(30B").mangledNameHash());
- ASSERT_EQ(0x000005e4u, ImmutableString("roundEven(00C").mangledNameHash());
+ ASSERT_EQ(0x000005e5u, ImmutableString("roundEven(00C").mangledNameHash());
ASSERT_EQ(0x00000537u, ImmutableString("roundEven(10C").mangledNameHash());
ASSERT_EQ(0x000002deu, ImmutableString("roundEven(20C").mangledNameHash());
ASSERT_EQ(0x00000242u, ImmutableString("roundEven(30C").mangledNameHash());
- ASSERT_EQ(0x000007a5u, ImmutableString("ceil(00B").mangledNameHash());
+ ASSERT_EQ(0x000007a6u, ImmutableString("ceil(00B").mangledNameHash());
ASSERT_EQ(0x000001d6u, ImmutableString("ceil(10B").mangledNameHash());
ASSERT_EQ(0x00000290u, ImmutableString("ceil(20B").mangledNameHash());
ASSERT_EQ(0x000001dau, ImmutableString("ceil(30B").mangledNameHash());
- ASSERT_EQ(0x000007a4u, ImmutableString("ceil(00C").mangledNameHash());
+ ASSERT_EQ(0x000007a5u, ImmutableString("ceil(00C").mangledNameHash());
ASSERT_EQ(0x0000002eu, ImmutableString("ceil(10C").mangledNameHash());
ASSERT_EQ(0x0000028fu, ImmutableString("ceil(20C").mangledNameHash());
ASSERT_EQ(0x0000031eu, ImmutableString("ceil(30C").mangledNameHash());
@@ -185,142 +185,142 @@
ASSERT_EQ(0x000003c8u, ImmutableString("fract(20C").mangledNameHash());
ASSERT_EQ(0x00000324u, ImmutableString("fract(30C").mangledNameHash());
ASSERT_EQ(0x00000534u, ImmutableString("mod(00B00B").mangledNameHash());
- ASSERT_EQ(0x0000071au, ImmutableString("mod(10B00B").mangledNameHash());
- ASSERT_EQ(0x000006cbu, ImmutableString("mod(20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000071bu, ImmutableString("mod(10B00B").mangledNameHash());
+ ASSERT_EQ(0x000006ccu, ImmutableString("mod(20B00B").mangledNameHash());
ASSERT_EQ(0x000000feu, ImmutableString("mod(30B00B").mangledNameHash());
- ASSERT_EQ(0x000007deu, ImmutableString("mod(10B10B").mangledNameHash());
- ASSERT_EQ(0x0000057au, ImmutableString("mod(20B20B").mangledNameHash());
- ASSERT_EQ(0x0000059fu, ImmutableString("mod(30B30B").mangledNameHash());
+ ASSERT_EQ(0x000007dfu, ImmutableString("mod(10B10B").mangledNameHash());
+ ASSERT_EQ(0x0000057bu, ImmutableString("mod(20B20B").mangledNameHash());
+ ASSERT_EQ(0x000005a0u, ImmutableString("mod(30B30B").mangledNameHash());
ASSERT_EQ(0x0000004fu, ImmutableString("mod(00C00C").mangledNameHash());
- ASSERT_EQ(0x000005f9u, ImmutableString("mod(10C00C").mangledNameHash());
+ ASSERT_EQ(0x000005fau, ImmutableString("mod(10C00C").mangledNameHash());
ASSERT_EQ(0x000001bbu, ImmutableString("mod(20C00C").mangledNameHash());
- ASSERT_EQ(0x0000084au, ImmutableString("mod(30C00C").mangledNameHash());
+ ASSERT_EQ(0x0000084bu, ImmutableString("mod(30C00C").mangledNameHash());
ASSERT_EQ(0x00000314u, ImmutableString("mod(10C10C").mangledNameHash());
ASSERT_EQ(0x00000323u, ImmutableString("mod(20C20C").mangledNameHash());
ASSERT_EQ(0x0000043du, ImmutableString("mod(30C30C").mangledNameHash());
- ASSERT_EQ(0x00000760u, ImmutableString("min(00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000761u, ImmutableString("min(00B00B").mangledNameHash());
ASSERT_EQ(0x00000256u, ImmutableString("min(10B00B").mangledNameHash());
ASSERT_EQ(0x0000029bu, ImmutableString("min(20B00B").mangledNameHash());
ASSERT_EQ(0x0000047au, ImmutableString("min(30B00B").mangledNameHash());
ASSERT_EQ(0x00000285u, ImmutableString("min(10B10B").mangledNameHash());
- ASSERT_EQ(0x0000078bu, ImmutableString("min(20B20B").mangledNameHash());
- ASSERT_EQ(0x0000069cu, ImmutableString("min(30B30B").mangledNameHash());
+ ASSERT_EQ(0x0000078cu, ImmutableString("min(20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000069du, ImmutableString("min(30B30B").mangledNameHash());
ASSERT_EQ(0x0000003du, ImmutableString("min(00C00C").mangledNameHash());
- ASSERT_EQ(0x0000063cu, ImmutableString("min(10C10C").mangledNameHash());
- ASSERT_EQ(0x00000749u, ImmutableString("min(20C20C").mangledNameHash());
+ ASSERT_EQ(0x0000063du, ImmutableString("min(10C10C").mangledNameHash());
+ ASSERT_EQ(0x0000074au, ImmutableString("min(20C20C").mangledNameHash());
ASSERT_EQ(0x00000432u, ImmutableString("min(30C30C").mangledNameHash());
- ASSERT_EQ(0x000006dau, ImmutableString("min(10C00C").mangledNameHash());
+ ASSERT_EQ(0x000006dbu, ImmutableString("min(10C00C").mangledNameHash());
ASSERT_EQ(0x00000399u, ImmutableString("min(20C00C").mangledNameHash());
ASSERT_EQ(0x00000111u, ImmutableString("min(30C00C").mangledNameHash());
ASSERT_EQ(0x000001e3u, ImmutableString("min(00D00D").mangledNameHash());
ASSERT_EQ(0x00000463u, ImmutableString("min(10D10D").mangledNameHash());
- ASSERT_EQ(0x000007c2u, ImmutableString("min(20D20D").mangledNameHash());
- ASSERT_EQ(0x000007afu, ImmutableString("min(30D30D").mangledNameHash());
+ ASSERT_EQ(0x000007c3u, ImmutableString("min(20D20D").mangledNameHash());
+ ASSERT_EQ(0x000007b0u, ImmutableString("min(30D30D").mangledNameHash());
ASSERT_EQ(0x000003a5u, ImmutableString("min(10D00D").mangledNameHash());
- ASSERT_EQ(0x00000689u, ImmutableString("min(20D00D").mangledNameHash());
- ASSERT_EQ(0x00000845u, ImmutableString("min(30D00D").mangledNameHash());
+ ASSERT_EQ(0x0000068au, ImmutableString("min(20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000846u, ImmutableString("min(30D00D").mangledNameHash());
ASSERT_EQ(0x00000360u, ImmutableString("min(00E00E").mangledNameHash());
- ASSERT_EQ(0x0000082cu, ImmutableString("min(10E10E").mangledNameHash());
- ASSERT_EQ(0x00000675u, ImmutableString("min(20E20E").mangledNameHash());
- ASSERT_EQ(0x0000075bu, ImmutableString("min(30E30E").mangledNameHash());
+ ASSERT_EQ(0x0000082du, ImmutableString("min(10E10E").mangledNameHash());
+ ASSERT_EQ(0x00000676u, ImmutableString("min(20E20E").mangledNameHash());
+ ASSERT_EQ(0x0000075cu, ImmutableString("min(30E30E").mangledNameHash());
ASSERT_EQ(0x00000084u, ImmutableString("min(10E00E").mangledNameHash());
- ASSERT_EQ(0x00000784u, ImmutableString("min(20E00E").mangledNameHash());
+ ASSERT_EQ(0x00000785u, ImmutableString("min(20E00E").mangledNameHash());
ASSERT_EQ(0x00000527u, ImmutableString("min(30E00E").mangledNameHash());
ASSERT_EQ(0x0000050bu, ImmutableString("max(00B00B").mangledNameHash());
- ASSERT_EQ(0x000007b6u, ImmutableString("max(10B00B").mangledNameHash());
+ ASSERT_EQ(0x000007b7u, ImmutableString("max(10B00B").mangledNameHash());
ASSERT_EQ(0x0000024cu, ImmutableString("max(20B00B").mangledNameHash());
ASSERT_EQ(0x00000375u, ImmutableString("max(30B00B").mangledNameHash());
ASSERT_EQ(0x00000208u, ImmutableString("max(10B10B").mangledNameHash());
- ASSERT_EQ(0x000005c1u, ImmutableString("max(20B20B").mangledNameHash());
+ ASSERT_EQ(0x000005c2u, ImmutableString("max(20B20B").mangledNameHash());
ASSERT_EQ(0x000000afu, ImmutableString("max(30B30B").mangledNameHash());
- ASSERT_EQ(0x00000822u, ImmutableString("max(00C00C").mangledNameHash());
- ASSERT_EQ(0x000005f0u, ImmutableString("max(10C10C").mangledNameHash());
+ ASSERT_EQ(0x00000823u, ImmutableString("max(00C00C").mangledNameHash());
+ ASSERT_EQ(0x000005f1u, ImmutableString("max(10C10C").mangledNameHash());
ASSERT_EQ(0x00000207u, ImmutableString("max(20C20C").mangledNameHash());
ASSERT_EQ(0x00000393u, ImmutableString("max(30C30C").mangledNameHash());
- ASSERT_EQ(0x00000695u, ImmutableString("max(10C00C").mangledNameHash());
- ASSERT_EQ(0x000005a5u, ImmutableString("max(20C00C").mangledNameHash());
+ ASSERT_EQ(0x00000696u, ImmutableString("max(10C00C").mangledNameHash());
+ ASSERT_EQ(0x000005a6u, ImmutableString("max(20C00C").mangledNameHash());
ASSERT_EQ(0x000002fdu, ImmutableString("max(30C00C").mangledNameHash());
ASSERT_EQ(0x000002e9u, ImmutableString("max(00D00D").mangledNameHash());
- ASSERT_EQ(0x00000583u, ImmutableString("max(10D10D").mangledNameHash());
- ASSERT_EQ(0x00000582u, ImmutableString("max(20D20D").mangledNameHash());
+ ASSERT_EQ(0x00000584u, ImmutableString("max(10D10D").mangledNameHash());
+ ASSERT_EQ(0x00000583u, ImmutableString("max(20D20D").mangledNameHash());
ASSERT_EQ(0x000003ddu, ImmutableString("max(30D30D").mangledNameHash());
ASSERT_EQ(0x000004edu, ImmutableString("max(10D00D").mangledNameHash());
- ASSERT_EQ(0x000006d3u, ImmutableString("max(20D00D").mangledNameHash());
+ ASSERT_EQ(0x000006d4u, ImmutableString("max(20D00D").mangledNameHash());
ASSERT_EQ(0x00000047u, ImmutableString("max(30D00D").mangledNameHash());
- ASSERT_EQ(0x00000654u, ImmutableString("max(00E00E").mangledNameHash());
+ ASSERT_EQ(0x00000655u, ImmutableString("max(00E00E").mangledNameHash());
ASSERT_EQ(0x000000aeu, ImmutableString("max(10E10E").mangledNameHash());
ASSERT_EQ(0x000002f0u, ImmutableString("max(20E20E").mangledNameHash());
ASSERT_EQ(0x00000327u, ImmutableString("max(30E30E").mangledNameHash());
ASSERT_EQ(0x00000340u, ImmutableString("max(10E00E").mangledNameHash());
ASSERT_EQ(0x000001a6u, ImmutableString("max(20E00E").mangledNameHash());
- ASSERT_EQ(0x00000716u, ImmutableString("max(30E00E").mangledNameHash());
- ASSERT_EQ(0x0000072du, ImmutableString("clamp(00B00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000717u, ImmutableString("max(30E00E").mangledNameHash());
+ ASSERT_EQ(0x0000072eu, ImmutableString("clamp(00B00B00B").mangledNameHash());
ASSERT_EQ(0x000004fau, ImmutableString("clamp(10B00B00B").mangledNameHash());
- ASSERT_EQ(0x000005b9u, ImmutableString("clamp(20B00B00B").mangledNameHash());
+ ASSERT_EQ(0x000005bau, ImmutableString("clamp(20B00B00B").mangledNameHash());
ASSERT_EQ(0x000004eau, ImmutableString("clamp(30B00B00B").mangledNameHash());
ASSERT_EQ(0x00000246u, ImmutableString("clamp(10B10B10B").mangledNameHash());
- ASSERT_EQ(0x0000081cu, ImmutableString("clamp(20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000081du, ImmutableString("clamp(20B20B20B").mangledNameHash());
ASSERT_EQ(0x00000027u, ImmutableString("clamp(30B30B30B").mangledNameHash());
ASSERT_EQ(0x0000033eu, ImmutableString("clamp(00C00C00C").mangledNameHash());
ASSERT_EQ(0x0000049du, ImmutableString("clamp(10C00C00C").mangledNameHash());
ASSERT_EQ(0x00000277u, ImmutableString("clamp(20C00C00C").mangledNameHash());
ASSERT_EQ(0x00000344u, ImmutableString("clamp(30C00C00C").mangledNameHash());
- ASSERT_EQ(0x00000732u, ImmutableString("clamp(10C10C10C").mangledNameHash());
+ ASSERT_EQ(0x00000733u, ImmutableString("clamp(10C10C10C").mangledNameHash());
ASSERT_EQ(0x0000007au, ImmutableString("clamp(20C20C20C").mangledNameHash());
- ASSERT_EQ(0x000006aau, ImmutableString("clamp(30C30C30C").mangledNameHash());
+ ASSERT_EQ(0x000006abu, ImmutableString("clamp(30C30C30C").mangledNameHash());
ASSERT_EQ(0x000004efu, ImmutableString("clamp(00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000231u, ImmutableString("clamp(10D00D00D").mangledNameHash());
ASSERT_EQ(0x000000fcu, ImmutableString("clamp(20D00D00D").mangledNameHash());
ASSERT_EQ(0x0000042au, ImmutableString("clamp(30D00D00D").mangledNameHash());
- ASSERT_EQ(0x000006bdu, ImmutableString("clamp(10D10D10D").mangledNameHash());
+ ASSERT_EQ(0x000006beu, ImmutableString("clamp(10D10D10D").mangledNameHash());
ASSERT_EQ(0x0000033bu, ImmutableString("clamp(20D20D20D").mangledNameHash());
- ASSERT_EQ(0x000005f7u, ImmutableString("clamp(30D30D30D").mangledNameHash());
+ ASSERT_EQ(0x000005f8u, ImmutableString("clamp(30D30D30D").mangledNameHash());
ASSERT_EQ(0x0000023bu, ImmutableString("clamp(00E00E00E").mangledNameHash());
- ASSERT_EQ(0x000005e8u, ImmutableString("clamp(10E00E00E").mangledNameHash());
- ASSERT_EQ(0x000007feu, ImmutableString("clamp(20E00E00E").mangledNameHash());
+ ASSERT_EQ(0x000005e9u, ImmutableString("clamp(10E00E00E").mangledNameHash());
+ ASSERT_EQ(0x000007ffu, ImmutableString("clamp(20E00E00E").mangledNameHash());
ASSERT_EQ(0x00000156u, ImmutableString("clamp(30E00E00E").mangledNameHash());
ASSERT_EQ(0x000000b0u, ImmutableString("clamp(10E10E10E").mangledNameHash());
ASSERT_EQ(0x000002a2u, ImmutableString("clamp(20E20E20E").mangledNameHash());
- ASSERT_EQ(0x000006c4u, ImmutableString("clamp(30E30E30E").mangledNameHash());
+ ASSERT_EQ(0x000006c5u, ImmutableString("clamp(30E30E30E").mangledNameHash());
ASSERT_EQ(0x00000264u, ImmutableString("mix(00B00B00B").mangledNameHash());
- ASSERT_EQ(0x000005f5u, ImmutableString("mix(10B10B00B").mangledNameHash());
+ ASSERT_EQ(0x000005f6u, ImmutableString("mix(10B10B00B").mangledNameHash());
ASSERT_EQ(0x0000001bu, ImmutableString("mix(20B20B00B").mangledNameHash());
- ASSERT_EQ(0x00000690u, ImmutableString("mix(30B30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000691u, ImmutableString("mix(30B30B00B").mangledNameHash());
ASSERT_EQ(0x00000550u, ImmutableString("mix(10B10B10B").mangledNameHash());
ASSERT_EQ(0x0000016au, ImmutableString("mix(20B20B20B").mangledNameHash());
ASSERT_EQ(0x000003d6u, ImmutableString("mix(30B30B30B").mangledNameHash());
ASSERT_EQ(0x00000429u, ImmutableString("mix(00C00C00C").mangledNameHash());
- ASSERT_EQ(0x00000628u, ImmutableString("mix(10C10C00C").mangledNameHash());
+ ASSERT_EQ(0x00000629u, ImmutableString("mix(10C10C00C").mangledNameHash());
ASSERT_EQ(0x00000415u, ImmutableString("mix(20C20C00C").mangledNameHash());
- ASSERT_EQ(0x000006d1u, ImmutableString("mix(30C30C00C").mangledNameHash());
- ASSERT_EQ(0x00000844u, ImmutableString("mix(10C10C10C").mangledNameHash());
+ ASSERT_EQ(0x000006d2u, ImmutableString("mix(30C30C00C").mangledNameHash());
+ ASSERT_EQ(0x00000845u, ImmutableString("mix(10C10C10C").mangledNameHash());
ASSERT_EQ(0x000002b6u, ImmutableString("mix(20C20C20C").mangledNameHash());
- ASSERT_EQ(0x00000763u, ImmutableString("mix(30C30C30C").mangledNameHash());
+ ASSERT_EQ(0x00000764u, ImmutableString("mix(30C30C30C").mangledNameHash());
ASSERT_EQ(0x00000265u, ImmutableString("mix(00B00B00F").mangledNameHash());
ASSERT_EQ(0x0000054eu, ImmutableString("mix(10B10B10F").mangledNameHash());
ASSERT_EQ(0x00000168u, ImmutableString("mix(20B20B20F").mangledNameHash());
ASSERT_EQ(0x000003d5u, ImmutableString("mix(30B30B30F").mangledNameHash());
ASSERT_EQ(0x00000183u, ImmutableString("mix(00C00C00F").mangledNameHash());
- ASSERT_EQ(0x000005a0u, ImmutableString("mix(10C10C10F").mangledNameHash());
+ ASSERT_EQ(0x000005a1u, ImmutableString("mix(10C10C10F").mangledNameHash());
ASSERT_EQ(0x000002b3u, ImmutableString("mix(20C20C20F").mangledNameHash());
- ASSERT_EQ(0x00000762u, ImmutableString("mix(30C30C30F").mangledNameHash());
+ ASSERT_EQ(0x00000763u, ImmutableString("mix(30C30C30F").mangledNameHash());
ASSERT_EQ(0x00000304u, ImmutableString("mix(00D00D00F").mangledNameHash());
ASSERT_EQ(0x000002d7u, ImmutableString("mix(10D10D10F").mangledNameHash());
ASSERT_EQ(0x00000038u, ImmutableString("mix(20D20D20F").mangledNameHash());
ASSERT_EQ(0x0000012du, ImmutableString("mix(30D30D30F").mangledNameHash());
ASSERT_EQ(0x00000302u, ImmutableString("mix(00E00E00F").mangledNameHash());
- ASSERT_EQ(0x000007e5u, ImmutableString("mix(10E10E10F").mangledNameHash());
+ ASSERT_EQ(0x000007e6u, ImmutableString("mix(10E10E10F").mangledNameHash());
ASSERT_EQ(0x0000042bu, ImmutableString("mix(20E20E20F").mangledNameHash());
ASSERT_EQ(0x0000027au, ImmutableString("mix(30E30E30F").mangledNameHash());
ASSERT_EQ(0x00000192u, ImmutableString("mix(00F00F00F").mangledNameHash());
ASSERT_EQ(0x000003e4u, ImmutableString("mix(10F10F10F").mangledNameHash());
ASSERT_EQ(0x000001c7u, ImmutableString("mix(20F20F20F").mangledNameHash());
ASSERT_EQ(0x0000025cu, ImmutableString("mix(30F30F30F").mangledNameHash());
- ASSERT_EQ(0x00000741u, ImmutableString("step(00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000742u, ImmutableString("step(00B00B").mangledNameHash());
ASSERT_EQ(0x00000179u, ImmutableString("step(10B10B").mangledNameHash());
ASSERT_EQ(0x00000093u, ImmutableString("step(20B20B").mangledNameHash());
ASSERT_EQ(0x00000378u, ImmutableString("step(30B30B").mangledNameHash());
- ASSERT_EQ(0x000006acu, ImmutableString("step(00B10B").mangledNameHash());
+ ASSERT_EQ(0x000006adu, ImmutableString("step(00B10B").mangledNameHash());
ASSERT_EQ(0x00000457u, ImmutableString("step(00B20B").mangledNameHash());
ASSERT_EQ(0x0000038du, ImmutableString("step(00B30B").mangledNameHash());
ASSERT_EQ(0x00000075u, ImmutableString("step(00C00C").mangledNameHash());
@@ -330,14 +330,14 @@
ASSERT_EQ(0x0000010du, ImmutableString("step(00C10C").mangledNameHash());
ASSERT_EQ(0x00000391u, ImmutableString("step(00C20C").mangledNameHash());
ASSERT_EQ(0x00000459u, ImmutableString("step(00C30C").mangledNameHash());
- ASSERT_EQ(0x0000079du, ImmutableString("smoothstep(00C00C00C").mangledNameHash());
+ ASSERT_EQ(0x0000079eu, ImmutableString("smoothstep(00C00C00C").mangledNameHash());
ASSERT_EQ(0x00000258u, ImmutableString("smoothstep(10C10C10C").mangledNameHash());
ASSERT_EQ(0x0000054au, ImmutableString("smoothstep(20C20C20C").mangledNameHash());
ASSERT_EQ(0x00000511u, ImmutableString("smoothstep(30C30C30C").mangledNameHash());
- ASSERT_EQ(0x000006fbu, ImmutableString("smoothstep(00C00C10C").mangledNameHash());
+ ASSERT_EQ(0x000006fcu, ImmutableString("smoothstep(00C00C10C").mangledNameHash());
ASSERT_EQ(0x0000008du, ImmutableString("smoothstep(00C00C20C").mangledNameHash());
- ASSERT_EQ(0x000007cbu, ImmutableString("smoothstep(00C00C30C").mangledNameHash());
- ASSERT_EQ(0x00000611u, ImmutableString("smoothstep(00B00B00B").mangledNameHash());
+ ASSERT_EQ(0x000007ccu, ImmutableString("smoothstep(00C00C30C").mangledNameHash());
+ ASSERT_EQ(0x00000612u, ImmutableString("smoothstep(00B00B00B").mangledNameHash());
ASSERT_EQ(0x00000352u, ImmutableString("smoothstep(10B10B10B").mangledNameHash());
ASSERT_EQ(0x00000217u, ImmutableString("smoothstep(20B20B20B").mangledNameHash());
ASSERT_EQ(0x000001e1u, ImmutableString("smoothstep(30B30B30B").mangledNameHash());
@@ -346,27 +346,27 @@
ASSERT_EQ(0x000001c8u, ImmutableString("smoothstep(00B00B30B").mangledNameHash());
ASSERT_EQ(0x00000442u, ImmutableString("modf(00B00B").mangledNameHash());
ASSERT_EQ(0x00000056u, ImmutableString("modf(10B10B").mangledNameHash());
- ASSERT_EQ(0x00000597u, ImmutableString("modf(20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000598u, ImmutableString("modf(20B20B").mangledNameHash());
ASSERT_EQ(0x000002ddu, ImmutableString("modf(30B30B").mangledNameHash());
- ASSERT_EQ(0x000005ddu, ImmutableString("modf(00C00C").mangledNameHash());
+ ASSERT_EQ(0x000005deu, ImmutableString("modf(00C00C").mangledNameHash());
ASSERT_EQ(0x00000406u, ImmutableString("modf(10C10C").mangledNameHash());
ASSERT_EQ(0x00000437u, ImmutableString("modf(20C20C").mangledNameHash());
ASSERT_EQ(0x000002f7u, ImmutableString("modf(30C30C").mangledNameHash());
ASSERT_EQ(0x0000035bu, ImmutableString("isnan(00B").mangledNameHash());
ASSERT_EQ(0x0000041eu, ImmutableString("isnan(10B").mangledNameHash());
- ASSERT_EQ(0x00000710u, ImmutableString("isnan(20B").mangledNameHash());
+ ASSERT_EQ(0x00000711u, ImmutableString("isnan(20B").mangledNameHash());
ASSERT_EQ(0x0000044fu, ImmutableString("isnan(30B").mangledNameHash());
ASSERT_EQ(0x0000035cu, ImmutableString("isnan(00C").mangledNameHash());
ASSERT_EQ(0x0000041du, ImmutableString("isnan(10C").mangledNameHash());
- ASSERT_EQ(0x00000711u, ImmutableString("isnan(20C").mangledNameHash());
- ASSERT_EQ(0x000007b9u, ImmutableString("isnan(30C").mangledNameHash());
+ ASSERT_EQ(0x00000712u, ImmutableString("isnan(20C").mangledNameHash());
+ ASSERT_EQ(0x000007bau, ImmutableString("isnan(30C").mangledNameHash());
ASSERT_EQ(0x000000fau, ImmutableString("isinf(00B").mangledNameHash());
ASSERT_EQ(0x000001abu, ImmutableString("isinf(10B").mangledNameHash());
- ASSERT_EQ(0x00000829u, ImmutableString("isinf(20B").mangledNameHash());
+ ASSERT_EQ(0x0000082au, ImmutableString("isinf(20B").mangledNameHash());
ASSERT_EQ(0x0000007eu, ImmutableString("isinf(30B").mangledNameHash());
ASSERT_EQ(0x000000fbu, ImmutableString("isinf(00C").mangledNameHash());
ASSERT_EQ(0x000001aau, ImmutableString("isinf(10C").mangledNameHash());
- ASSERT_EQ(0x00000735u, ImmutableString("isinf(20C").mangledNameHash());
+ ASSERT_EQ(0x00000736u, ImmutableString("isinf(20C").mangledNameHash());
ASSERT_EQ(0x000002d5u, ImmutableString("isinf(30C").mangledNameHash());
ASSERT_EQ(0x0000042fu, ImmutableString("floatBitsToInt(00B").mangledNameHash());
ASSERT_EQ(0x0000042cu, ImmutableString("floatBitsToInt(10B").mangledNameHash());
@@ -376,15 +376,15 @@
ASSERT_EQ(0x000004a6u, ImmutableString("floatBitsToUint(10B").mangledNameHash());
ASSERT_EQ(0x00000034u, ImmutableString("floatBitsToUint(20B").mangledNameHash());
ASSERT_EQ(0x0000036fu, ImmutableString("floatBitsToUint(30B").mangledNameHash());
- ASSERT_EQ(0x000007ecu, ImmutableString("intBitsToFloat(00D").mangledNameHash());
- ASSERT_EQ(0x00000748u, ImmutableString("intBitsToFloat(10D").mangledNameHash());
+ ASSERT_EQ(0x000007edu, ImmutableString("intBitsToFloat(00D").mangledNameHash());
+ ASSERT_EQ(0x00000749u, ImmutableString("intBitsToFloat(10D").mangledNameHash());
ASSERT_EQ(0x000000deu, ImmutableString("intBitsToFloat(20D").mangledNameHash());
ASSERT_EQ(0x00000164u, ImmutableString("intBitsToFloat(30D").mangledNameHash());
- ASSERT_EQ(0x0000068bu, ImmutableString("uintBitsToFloat(00E").mangledNameHash());
- ASSERT_EQ(0x0000071cu, ImmutableString("uintBitsToFloat(10E").mangledNameHash());
- ASSERT_EQ(0x000007dcu, ImmutableString("uintBitsToFloat(20E").mangledNameHash());
+ ASSERT_EQ(0x0000068cu, ImmutableString("uintBitsToFloat(00E").mangledNameHash());
+ ASSERT_EQ(0x0000071du, ImmutableString("uintBitsToFloat(10E").mangledNameHash());
+ ASSERT_EQ(0x000007ddu, ImmutableString("uintBitsToFloat(20E").mangledNameHash());
ASSERT_EQ(0x0000001eu, ImmutableString("uintBitsToFloat(30E").mangledNameHash());
- ASSERT_EQ(0x00000835u, ImmutableString("fma(00B00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000836u, ImmutableString("fma(00B00B00B").mangledNameHash());
ASSERT_EQ(0x00000568u, ImmutableString("fma(10B10B10B").mangledNameHash());
ASSERT_EQ(0x0000018au, ImmutableString("fma(20B20B20B").mangledNameHash());
ASSERT_EQ(0x00000273u, ImmutableString("fma(30B30B30B").mangledNameHash());
@@ -399,68 +399,68 @@
ASSERT_EQ(0x00000143u, ImmutableString("frexp(00C00D").mangledNameHash());
ASSERT_EQ(0x00000386u, ImmutableString("frexp(10C10D").mangledNameHash());
ASSERT_EQ(0x0000011au, ImmutableString("frexp(20C20D").mangledNameHash());
- ASSERT_EQ(0x00000843u, ImmutableString("frexp(30C30D").mangledNameHash());
+ ASSERT_EQ(0x00000844u, ImmutableString("frexp(30C30D").mangledNameHash());
ASSERT_EQ(0x0000023du, ImmutableString("ldexp(00B00D").mangledNameHash());
- ASSERT_EQ(0x0000080fu, ImmutableString("ldexp(10B10D").mangledNameHash());
+ ASSERT_EQ(0x00000810u, ImmutableString("ldexp(10B10D").mangledNameHash());
ASSERT_EQ(0x000001e7u, ImmutableString("ldexp(20B20D").mangledNameHash());
ASSERT_EQ(0x00000374u, ImmutableString("ldexp(30B30D").mangledNameHash());
- ASSERT_EQ(0x00000664u, ImmutableString("ldexp(00C00D").mangledNameHash());
+ ASSERT_EQ(0x00000665u, ImmutableString("ldexp(00C00D").mangledNameHash());
ASSERT_EQ(0x00000446u, ImmutableString("ldexp(10C10D").mangledNameHash());
ASSERT_EQ(0x0000023au, ImmutableString("ldexp(20C20D").mangledNameHash());
ASSERT_EQ(0x00000252u, ImmutableString("ldexp(30C30D").mangledNameHash());
ASSERT_EQ(0x0000036eu, ImmutableString("packSnorm2x16(10B").mangledNameHash());
ASSERT_EQ(0x000003afu, ImmutableString("packHalf2x16(10B").mangledNameHash());
- ASSERT_EQ(0x00000774u, ImmutableString("unpackSnorm2x16(00E").mangledNameHash());
+ ASSERT_EQ(0x00000775u, ImmutableString("unpackSnorm2x16(00E").mangledNameHash());
ASSERT_EQ(0x0000009fu, ImmutableString("unpackHalf2x16(00E").mangledNameHash());
ASSERT_EQ(0x0000019du, ImmutableString("packUnorm2x16(10B").mangledNameHash());
ASSERT_EQ(0x00000482u, ImmutableString("unpackUnorm2x16(00E").mangledNameHash());
ASSERT_EQ(0x0000048au, ImmutableString("packUnorm4x8(30B").mangledNameHash());
- ASSERT_EQ(0x000005f4u, ImmutableString("packSnorm4x8(30B").mangledNameHash());
- ASSERT_EQ(0x000007ddu, ImmutableString("unpackUnorm4x8(00E").mangledNameHash());
- ASSERT_EQ(0x00000709u, ImmutableString("unpackSnorm4x8(00E").mangledNameHash());
+ ASSERT_EQ(0x000005f5u, ImmutableString("packSnorm4x8(30B").mangledNameHash());
+ ASSERT_EQ(0x000007deu, ImmutableString("unpackUnorm4x8(00E").mangledNameHash());
+ ASSERT_EQ(0x0000070au, ImmutableString("unpackSnorm4x8(00E").mangledNameHash());
ASSERT_EQ(0x000004f9u, ImmutableString("packDouble2x32(10E").mangledNameHash());
ASSERT_EQ(0x0000026bu, ImmutableString("unpackDouble2x32(00C").mangledNameHash());
- ASSERT_EQ(0x0000077cu, ImmutableString("length(00B").mangledNameHash());
- ASSERT_EQ(0x000006e6u, ImmutableString("length(10B").mangledNameHash());
+ ASSERT_EQ(0x0000077du, ImmutableString("length(00B").mangledNameHash());
+ ASSERT_EQ(0x000006e7u, ImmutableString("length(10B").mangledNameHash());
ASSERT_EQ(0x0000023cu, ImmutableString("length(20B").mangledNameHash());
- ASSERT_EQ(0x0000059eu, ImmutableString("length(30B").mangledNameHash());
- ASSERT_EQ(0x0000077du, ImmutableString("length(00C").mangledNameHash());
- ASSERT_EQ(0x000006e5u, ImmutableString("length(10C").mangledNameHash());
+ ASSERT_EQ(0x0000059fu, ImmutableString("length(30B").mangledNameHash());
+ ASSERT_EQ(0x0000077eu, ImmutableString("length(00C").mangledNameHash());
+ ASSERT_EQ(0x000006e6u, ImmutableString("length(10C").mangledNameHash());
ASSERT_EQ(0x00000245u, ImmutableString("length(20C").mangledNameHash());
- ASSERT_EQ(0x0000059du, ImmutableString("length(30C").mangledNameHash());
- ASSERT_EQ(0x000007a6u, ImmutableString("distance(00B00B").mangledNameHash());
+ ASSERT_EQ(0x0000059eu, ImmutableString("length(30C").mangledNameHash());
+ ASSERT_EQ(0x000007a7u, ImmutableString("distance(00B00B").mangledNameHash());
ASSERT_EQ(0x000000cfu, ImmutableString("distance(10B10B").mangledNameHash());
ASSERT_EQ(0x0000053eu, ImmutableString("distance(20B20B").mangledNameHash());
ASSERT_EQ(0x000004d3u, ImmutableString("distance(30B30B").mangledNameHash());
ASSERT_EQ(0x0000044eu, ImmutableString("distance(00C00C").mangledNameHash());
ASSERT_EQ(0x0000032bu, ImmutableString("distance(10C10C").mangledNameHash());
- ASSERT_EQ(0x000007a0u, ImmutableString("distance(20C20C").mangledNameHash());
+ ASSERT_EQ(0x000007a1u, ImmutableString("distance(20C20C").mangledNameHash());
ASSERT_EQ(0x00000574u, ImmutableString("distance(30C30C").mangledNameHash());
- ASSERT_EQ(0x000006ebu, ImmutableString("dot(00B00B").mangledNameHash());
+ ASSERT_EQ(0x000006ecu, ImmutableString("dot(00B00B").mangledNameHash());
ASSERT_EQ(0x000002c3u, ImmutableString("dot(10B10B").mangledNameHash());
ASSERT_EQ(0x000003f0u, ImmutableString("dot(20B20B").mangledNameHash());
ASSERT_EQ(0x000004e1u, ImmutableString("dot(30B30B").mangledNameHash());
ASSERT_EQ(0x00000392u, ImmutableString("dot(00C00C").mangledNameHash());
- ASSERT_EQ(0x00000739u, ImmutableString("dot(10C10C").mangledNameHash());
- ASSERT_EQ(0x0000064bu, ImmutableString("dot(20C20C").mangledNameHash());
- ASSERT_EQ(0x0000060bu, ImmutableString("dot(30C30C").mangledNameHash());
- ASSERT_EQ(0x000005b6u, ImmutableString("cross(20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000073au, ImmutableString("dot(10C10C").mangledNameHash());
+ ASSERT_EQ(0x0000064cu, ImmutableString("dot(20C20C").mangledNameHash());
+ ASSERT_EQ(0x0000060cu, ImmutableString("dot(30C30C").mangledNameHash());
+ ASSERT_EQ(0x000005b7u, ImmutableString("cross(20B20B").mangledNameHash());
ASSERT_EQ(0x0000034du, ImmutableString("cross(20C20C").mangledNameHash());
ASSERT_EQ(0x0000049bu, ImmutableString("normalize(00B").mangledNameHash());
- ASSERT_EQ(0x0000070eu, ImmutableString("normalize(10B").mangledNameHash());
+ ASSERT_EQ(0x0000070fu, ImmutableString("normalize(10B").mangledNameHash());
ASSERT_EQ(0x00000115u, ImmutableString("normalize(20B").mangledNameHash());
ASSERT_EQ(0x000003f7u, ImmutableString("normalize(30B").mangledNameHash());
ASSERT_EQ(0x0000049cu, ImmutableString("normalize(00C").mangledNameHash());
- ASSERT_EQ(0x00000708u, ImmutableString("normalize(10C").mangledNameHash());
+ ASSERT_EQ(0x00000709u, ImmutableString("normalize(10C").mangledNameHash());
ASSERT_EQ(0x00000116u, ImmutableString("normalize(20C").mangledNameHash());
ASSERT_EQ(0x000003f6u, ImmutableString("normalize(30C").mangledNameHash());
- ASSERT_EQ(0x000005d1u, ImmutableString("faceforward(00B00B00B").mangledNameHash());
+ ASSERT_EQ(0x000005d2u, ImmutableString("faceforward(00B00B00B").mangledNameHash());
ASSERT_EQ(0x000003a3u, ImmutableString("faceforward(10B10B10B").mangledNameHash());
ASSERT_EQ(0x00000187u, ImmutableString("faceforward(20B20B20B").mangledNameHash());
- ASSERT_EQ(0x0000079fu, ImmutableString("faceforward(30B30B30B").mangledNameHash());
+ ASSERT_EQ(0x000007a0u, ImmutableString("faceforward(30B30B30B").mangledNameHash());
ASSERT_EQ(0x00000316u, ImmutableString("faceforward(00C00C00C").mangledNameHash());
- ASSERT_EQ(0x00000687u, ImmutableString("faceforward(10C10C10C").mangledNameHash());
- ASSERT_EQ(0x00000750u, ImmutableString("faceforward(20C20C20C").mangledNameHash());
+ ASSERT_EQ(0x00000688u, ImmutableString("faceforward(10C10C10C").mangledNameHash());
+ ASSERT_EQ(0x00000751u, ImmutableString("faceforward(20C20C20C").mangledNameHash());
ASSERT_EQ(0x00000535u, ImmutableString("faceforward(30C30C30C").mangledNameHash());
ASSERT_EQ(0x0000029cu, ImmutableString("reflect(00B00B").mangledNameHash());
ASSERT_EQ(0x000002b0u, ImmutableString("reflect(10B10B").mangledNameHash());
@@ -468,82 +468,82 @@
ASSERT_EQ(0x0000052bu, ImmutableString("reflect(30B30B").mangledNameHash());
ASSERT_EQ(0x00000162u, ImmutableString("reflect(00C00C").mangledNameHash());
ASSERT_EQ(0x0000054fu, ImmutableString("reflect(10C10C").mangledNameHash());
- ASSERT_EQ(0x0000069du, ImmutableString("reflect(20C20C").mangledNameHash());
+ ASSERT_EQ(0x0000069eu, ImmutableString("reflect(20C20C").mangledNameHash());
ASSERT_EQ(0x000004f4u, ImmutableString("reflect(30C30C").mangledNameHash());
ASSERT_EQ(0x00000105u, ImmutableString("refract(00B00B00B").mangledNameHash());
ASSERT_EQ(0x000002b1u, ImmutableString("refract(10B10B00B").mangledNameHash());
ASSERT_EQ(0x0000031du, ImmutableString("refract(20B20B00B").mangledNameHash());
- ASSERT_EQ(0x00000586u, ImmutableString("refract(30B30B00B").mangledNameHash());
- ASSERT_EQ(0x00000725u, ImmutableString("refract(00C00C00B").mangledNameHash());
+ ASSERT_EQ(0x00000587u, ImmutableString("refract(30B30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000726u, ImmutableString("refract(00C00C00B").mangledNameHash());
ASSERT_EQ(0x0000035fu, ImmutableString("refract(10C10C00B").mangledNameHash());
- ASSERT_EQ(0x00000657u, ImmutableString("refract(20C20C00B").mangledNameHash());
+ ASSERT_EQ(0x00000658u, ImmutableString("refract(20C20C00B").mangledNameHash());
ASSERT_EQ(0x0000036cu, ImmutableString("refract(30C30C00B").mangledNameHash());
ASSERT_EQ(0x000002ceu, ImmutableString("ftransform(").mangledNameHash());
ASSERT_EQ(0x000001ffu, ImmutableString("matrixCompMult(50B50B").mangledNameHash());
- ASSERT_EQ(0x000006f2u, ImmutableString("matrixCompMult(A0BA0B").mangledNameHash());
- ASSERT_EQ(0x0000058bu, ImmutableString("matrixCompMult(F0BF0B").mangledNameHash());
+ ASSERT_EQ(0x000006f3u, ImmutableString("matrixCompMult(A0BA0B").mangledNameHash());
+ ASSERT_EQ(0x0000058cu, ImmutableString("matrixCompMult(F0BF0B").mangledNameHash());
ASSERT_EQ(0x00000151u, ImmutableString("matrixCompMult(90B90B").mangledNameHash());
- ASSERT_EQ(0x00000770u, ImmutableString("matrixCompMult(60B60B").mangledNameHash());
- ASSERT_EQ(0x00000696u, ImmutableString("matrixCompMult(D0BD0B").mangledNameHash());
- ASSERT_EQ(0x0000071eu, ImmutableString("matrixCompMult(70B70B").mangledNameHash());
+ ASSERT_EQ(0x00000771u, ImmutableString("matrixCompMult(60B60B").mangledNameHash());
+ ASSERT_EQ(0x00000697u, ImmutableString("matrixCompMult(D0BD0B").mangledNameHash());
+ ASSERT_EQ(0x0000071fu, ImmutableString("matrixCompMult(70B70B").mangledNameHash());
ASSERT_EQ(0x00000346u, ImmutableString("matrixCompMult(E0BE0B").mangledNameHash());
- ASSERT_EQ(0x000005b4u, ImmutableString("matrixCompMult(B0BB0B").mangledNameHash());
+ ASSERT_EQ(0x000005b5u, ImmutableString("matrixCompMult(B0BB0B").mangledNameHash());
ASSERT_EQ(0x000000a1u, ImmutableString("outerProduct(10B10B").mangledNameHash());
ASSERT_EQ(0x000000bdu, ImmutableString("outerProduct(20B20B").mangledNameHash());
ASSERT_EQ(0x0000018du, ImmutableString("outerProduct(30B30B").mangledNameHash());
- ASSERT_EQ(0x00000733u, ImmutableString("outerProduct(20B10B").mangledNameHash());
+ ASSERT_EQ(0x00000734u, ImmutableString("outerProduct(20B10B").mangledNameHash());
ASSERT_EQ(0x0000009cu, ImmutableString("outerProduct(10B20B").mangledNameHash());
ASSERT_EQ(0x000002e0u, ImmutableString("outerProduct(30B10B").mangledNameHash());
ASSERT_EQ(0x0000013fu, ImmutableString("outerProduct(10B30B").mangledNameHash());
ASSERT_EQ(0x000000e9u, ImmutableString("outerProduct(30B20B").mangledNameHash());
ASSERT_EQ(0x00000013u, ImmutableString("outerProduct(20B30B").mangledNameHash());
- ASSERT_EQ(0x000007bau, ImmutableString("transpose(50B").mangledNameHash());
- ASSERT_EQ(0x000005feu, ImmutableString("transpose(A0B").mangledNameHash());
- ASSERT_EQ(0x000006c0u, ImmutableString("transpose(F0B").mangledNameHash());
- ASSERT_EQ(0x000005cdu, ImmutableString("transpose(60B").mangledNameHash());
- ASSERT_EQ(0x000006d0u, ImmutableString("transpose(90B").mangledNameHash());
- ASSERT_EQ(0x00000680u, ImmutableString("transpose(70B").mangledNameHash());
- ASSERT_EQ(0x000007f5u, ImmutableString("transpose(D0B").mangledNameHash());
+ ASSERT_EQ(0x000007bbu, ImmutableString("transpose(50B").mangledNameHash());
+ ASSERT_EQ(0x000005ffu, ImmutableString("transpose(A0B").mangledNameHash());
+ ASSERT_EQ(0x000006c1u, ImmutableString("transpose(F0B").mangledNameHash());
+ ASSERT_EQ(0x000005ceu, ImmutableString("transpose(60B").mangledNameHash());
+ ASSERT_EQ(0x000006d1u, ImmutableString("transpose(90B").mangledNameHash());
+ ASSERT_EQ(0x00000681u, ImmutableString("transpose(70B").mangledNameHash());
+ ASSERT_EQ(0x000007f6u, ImmutableString("transpose(D0B").mangledNameHash());
ASSERT_EQ(0x000001c5u, ImmutableString("transpose(B0B").mangledNameHash());
ASSERT_EQ(0x00000050u, ImmutableString("transpose(E0B").mangledNameHash());
ASSERT_EQ(0x00000059u, ImmutableString("determinant(50B").mangledNameHash());
ASSERT_EQ(0x00000449u, ImmutableString("determinant(A0B").mangledNameHash());
- ASSERT_EQ(0x000005fdu, ImmutableString("determinant(F0B").mangledNameHash());
+ ASSERT_EQ(0x000005feu, ImmutableString("determinant(F0B").mangledNameHash());
ASSERT_EQ(0x000002c2u, ImmutableString("inverse(50B").mangledNameHash());
ASSERT_EQ(0x00000558u, ImmutableString("inverse(A0B").mangledNameHash());
ASSERT_EQ(0x00000118u, ImmutableString("inverse(F0B").mangledNameHash());
ASSERT_EQ(0x000001b6u, ImmutableString("lessThan(10B10B").mangledNameHash());
ASSERT_EQ(0x0000005cu, ImmutableString("lessThan(20B20B").mangledNameHash());
- ASSERT_EQ(0x000005b5u, ImmutableString("lessThan(30B30B").mangledNameHash());
+ ASSERT_EQ(0x000005b6u, ImmutableString("lessThan(30B30B").mangledNameHash());
ASSERT_EQ(0x000004fdu, ImmutableString("lessThan(10D10D").mangledNameHash());
ASSERT_EQ(0x00000079u, ImmutableString("lessThan(20D20D").mangledNameHash());
- ASSERT_EQ(0x00000775u, ImmutableString("lessThan(30D30D").mangledNameHash());
+ ASSERT_EQ(0x00000776u, ImmutableString("lessThan(30D30D").mangledNameHash());
ASSERT_EQ(0x0000006eu, ImmutableString("lessThan(10E10E").mangledNameHash());
- ASSERT_EQ(0x000005c2u, ImmutableString("lessThan(20E20E").mangledNameHash());
- ASSERT_EQ(0x0000067eu, ImmutableString("lessThan(30E30E").mangledNameHash());
+ ASSERT_EQ(0x000005c3u, ImmutableString("lessThan(20E20E").mangledNameHash());
+ ASSERT_EQ(0x0000067fu, ImmutableString("lessThan(30E30E").mangledNameHash());
ASSERT_EQ(0x00000260u, ImmutableString("lessThanEqual(10B10B").mangledNameHash());
ASSERT_EQ(0x00000255u, ImmutableString("lessThanEqual(20B20B").mangledNameHash());
ASSERT_EQ(0x0000000fu, ImmutableString("lessThanEqual(30B30B").mangledNameHash());
- ASSERT_EQ(0x0000061fu, ImmutableString("lessThanEqual(10D10D").mangledNameHash());
+ ASSERT_EQ(0x00000620u, ImmutableString("lessThanEqual(10D10D").mangledNameHash());
ASSERT_EQ(0x000001beu, ImmutableString("lessThanEqual(20D20D").mangledNameHash());
ASSERT_EQ(0x00000451u, ImmutableString("lessThanEqual(30D30D").mangledNameHash());
ASSERT_EQ(0x0000015du, ImmutableString("lessThanEqual(10E10E").mangledNameHash());
- ASSERT_EQ(0x000007d5u, ImmutableString("lessThanEqual(20E20E").mangledNameHash());
+ ASSERT_EQ(0x000007d6u, ImmutableString("lessThanEqual(20E20E").mangledNameHash());
ASSERT_EQ(0x00000083u, ImmutableString("lessThanEqual(30E30E").mangledNameHash());
ASSERT_EQ(0x00000428u, ImmutableString("greaterThan(10B10B").mangledNameHash());
- ASSERT_EQ(0x000007c1u, ImmutableString("greaterThan(20B20B").mangledNameHash());
+ ASSERT_EQ(0x000007c2u, ImmutableString("greaterThan(20B20B").mangledNameHash());
ASSERT_EQ(0x00000185u, ImmutableString("greaterThan(30B30B").mangledNameHash());
- ASSERT_EQ(0x000006dbu, ImmutableString("greaterThan(10D10D").mangledNameHash());
- ASSERT_EQ(0x000006e0u, ImmutableString("greaterThan(20D20D").mangledNameHash());
+ ASSERT_EQ(0x000006dcu, ImmutableString("greaterThan(10D10D").mangledNameHash());
+ ASSERT_EQ(0x000006e1u, ImmutableString("greaterThan(20D20D").mangledNameHash());
ASSERT_EQ(0x0000008au, ImmutableString("greaterThan(30D30D").mangledNameHash());
ASSERT_EQ(0x00000213u, ImmutableString("greaterThan(10E10E").mangledNameHash());
ASSERT_EQ(0x00000103u, ImmutableString("greaterThan(20E20E").mangledNameHash());
ASSERT_EQ(0x0000011fu, ImmutableString("greaterThan(30E30E").mangledNameHash());
- ASSERT_EQ(0x000006bbu, ImmutableString("greaterThanEqual(10B10B").mangledNameHash());
+ ASSERT_EQ(0x000006bcu, ImmutableString("greaterThanEqual(10B10B").mangledNameHash());
ASSERT_EQ(0x0000002cu, ImmutableString("greaterThanEqual(20B20B").mangledNameHash());
ASSERT_EQ(0x000001aeu, ImmutableString("greaterThanEqual(30B30B").mangledNameHash());
ASSERT_EQ(0x000000d6u, ImmutableString("greaterThanEqual(10D10D").mangledNameHash());
- ASSERT_EQ(0x000007bbu, ImmutableString("greaterThanEqual(20D20D").mangledNameHash());
+ ASSERT_EQ(0x000007bcu, ImmutableString("greaterThanEqual(20D20D").mangledNameHash());
ASSERT_EQ(0x000001e8u, ImmutableString("greaterThanEqual(30D30D").mangledNameHash());
ASSERT_EQ(0x00000024u, ImmutableString("greaterThanEqual(10E10E").mangledNameHash());
ASSERT_EQ(0x000002d2u, ImmutableString("greaterThanEqual(20E20E").mangledNameHash());
@@ -552,24 +552,24 @@
ASSERT_EQ(0x000002fbu, ImmutableString("equal(20B20B").mangledNameHash());
ASSERT_EQ(0x00000200u, ImmutableString("equal(30B30B").mangledNameHash());
ASSERT_EQ(0x00000046u, ImmutableString("equal(10D10D").mangledNameHash());
- ASSERT_EQ(0x000007e3u, ImmutableString("equal(20D20D").mangledNameHash());
+ ASSERT_EQ(0x000007e4u, ImmutableString("equal(20D20D").mangledNameHash());
ASSERT_EQ(0x0000036du, ImmutableString("equal(30D30D").mangledNameHash());
- ASSERT_EQ(0x00000633u, ImmutableString("equal(10E10E").mangledNameHash());
+ ASSERT_EQ(0x00000634u, ImmutableString("equal(10E10E").mangledNameHash());
ASSERT_EQ(0x0000014bu, ImmutableString("equal(20E20E").mangledNameHash());
ASSERT_EQ(0x0000038fu, ImmutableString("equal(30E30E").mangledNameHash());
ASSERT_EQ(0x0000051eu, ImmutableString("equal(10F10F").mangledNameHash());
ASSERT_EQ(0x00000413u, ImmutableString("equal(20F20F").mangledNameHash());
- ASSERT_EQ(0x000005c4u, ImmutableString("equal(30F30F").mangledNameHash());
- ASSERT_EQ(0x00000778u, ImmutableString("notEqual(10B10B").mangledNameHash());
+ ASSERT_EQ(0x000005c5u, ImmutableString("equal(30F30F").mangledNameHash());
+ ASSERT_EQ(0x00000779u, ImmutableString("notEqual(10B10B").mangledNameHash());
ASSERT_EQ(0x00000364u, ImmutableString("notEqual(20B20B").mangledNameHash());
ASSERT_EQ(0x0000030du, ImmutableString("notEqual(30B30B").mangledNameHash());
ASSERT_EQ(0x00000396u, ImmutableString("notEqual(10D10D").mangledNameHash());
ASSERT_EQ(0x00000443u, ImmutableString("notEqual(20D20D").mangledNameHash());
ASSERT_EQ(0x000004bcu, ImmutableString("notEqual(30D30D").mangledNameHash());
- ASSERT_EQ(0x0000063bu, ImmutableString("notEqual(10E10E").mangledNameHash());
+ ASSERT_EQ(0x0000063cu, ImmutableString("notEqual(10E10E").mangledNameHash());
ASSERT_EQ(0x00000556u, ImmutableString("notEqual(20E20E").mangledNameHash());
ASSERT_EQ(0x0000015cu, ImmutableString("notEqual(30E30E").mangledNameHash());
- ASSERT_EQ(0x0000060fu, ImmutableString("notEqual(10F10F").mangledNameHash());
+ ASSERT_EQ(0x00000610u, ImmutableString("notEqual(10F10F").mangledNameHash());
ASSERT_EQ(0x000004b7u, ImmutableString("notEqual(20F20F").mangledNameHash());
ASSERT_EQ(0x000003beu, ImmutableString("notEqual(30F30F").mangledNameHash());
ASSERT_EQ(0x0000016bu, ImmutableString("any(10F").mangledNameHash());
@@ -580,23 +580,23 @@
ASSERT_EQ(0x00000464u, ImmutableString("all(30F").mangledNameHash());
ASSERT_EQ(0x0000000du, ImmutableString("not(10F").mangledNameHash());
ASSERT_EQ(0x000000b7u, ImmutableString("not(20F").mangledNameHash());
- ASSERT_EQ(0x00000817u, ImmutableString("not(30F").mangledNameHash());
- ASSERT_EQ(0x000005c7u, ImmutableString("bitfieldExtract(00D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000818u, ImmutableString("not(30F").mangledNameHash());
+ ASSERT_EQ(0x000005c8u, ImmutableString("bitfieldExtract(00D00D00D").mangledNameHash());
ASSERT_EQ(0x000000f1u, ImmutableString("bitfieldExtract(10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000129u, ImmutableString("bitfieldExtract(20D00D00D").mangledNameHash());
- ASSERT_EQ(0x000007e8u, ImmutableString("bitfieldExtract(30D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000007e9u, ImmutableString("bitfieldExtract(30D00D00D").mangledNameHash());
ASSERT_EQ(0x00000572u, ImmutableString("bitfieldExtract(00E00D00D").mangledNameHash());
- ASSERT_EQ(0x000006dcu, ImmutableString("bitfieldExtract(10E00D00D").mangledNameHash());
- ASSERT_EQ(0x000007dbu, ImmutableString("bitfieldExtract(20E00D00D").mangledNameHash());
+ ASSERT_EQ(0x000006ddu, ImmutableString("bitfieldExtract(10E00D00D").mangledNameHash());
+ ASSERT_EQ(0x000007dcu, ImmutableString("bitfieldExtract(20E00D00D").mangledNameHash());
ASSERT_EQ(0x000000d4u, ImmutableString("bitfieldExtract(30E00D00D").mangledNameHash());
ASSERT_EQ(0x0000023fu, ImmutableString("bitfieldInsert(00D00D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000617u, ImmutableString("bitfieldInsert(10D10D00D00D").mangledNameHash());
- ASSERT_EQ(0x0000068fu, ImmutableString("bitfieldInsert(20D20D00D00D").mangledNameHash());
- ASSERT_EQ(0x000006d9u, ImmutableString("bitfieldInsert(30D30D00D00D").mangledNameHash());
- ASSERT_EQ(0x000006a0u, ImmutableString("bitfieldInsert(00E00E00D00D").mangledNameHash());
- ASSERT_EQ(0x000005f3u, ImmutableString("bitfieldInsert(10E10E00D00D").mangledNameHash());
- ASSERT_EQ(0x00000790u, ImmutableString("bitfieldInsert(20E20E00D00D").mangledNameHash());
- ASSERT_EQ(0x000007dau, ImmutableString("bitfieldInsert(30E30E00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000618u, ImmutableString("bitfieldInsert(10D10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000690u, ImmutableString("bitfieldInsert(20D20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000006dau, ImmutableString("bitfieldInsert(30D30D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000006a1u, ImmutableString("bitfieldInsert(00E00E00D00D").mangledNameHash());
+ ASSERT_EQ(0x000005f4u, ImmutableString("bitfieldInsert(10E10E00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000791u, ImmutableString("bitfieldInsert(20E20E00D00D").mangledNameHash());
+ ASSERT_EQ(0x000007dbu, ImmutableString("bitfieldInsert(30E30E00D00D").mangledNameHash());
ASSERT_EQ(0x000000d2u, ImmutableString("bitfieldReverse(00D").mangledNameHash());
ASSERT_EQ(0x0000017eu, ImmutableString("bitfieldReverse(10D").mangledNameHash());
ASSERT_EQ(0x0000046au, ImmutableString("bitfieldReverse(20D").mangledNameHash());
@@ -613,51 +613,51 @@
ASSERT_EQ(0x0000018fu, ImmutableString("bitCount(10E").mangledNameHash());
ASSERT_EQ(0x0000053bu, ImmutableString("bitCount(20E").mangledNameHash());
ASSERT_EQ(0x00000480u, ImmutableString("bitCount(30E").mangledNameHash());
- ASSERT_EQ(0x000005bbu, ImmutableString("findLSB(00D").mangledNameHash());
- ASSERT_EQ(0x0000074au, ImmutableString("findLSB(10D").mangledNameHash());
- ASSERT_EQ(0x000006b6u, ImmutableString("findLSB(20D").mangledNameHash());
+ ASSERT_EQ(0x000005bcu, ImmutableString("findLSB(00D").mangledNameHash());
+ ASSERT_EQ(0x0000074bu, ImmutableString("findLSB(10D").mangledNameHash());
+ ASSERT_EQ(0x000006b7u, ImmutableString("findLSB(20D").mangledNameHash());
ASSERT_EQ(0x0000039cu, ImmutableString("findLSB(30D").mangledNameHash());
- ASSERT_EQ(0x000007eeu, ImmutableString("findLSB(00E").mangledNameHash());
+ ASSERT_EQ(0x000007efu, ImmutableString("findLSB(00E").mangledNameHash());
ASSERT_EQ(0x000001eau, ImmutableString("findLSB(10E").mangledNameHash());
- ASSERT_EQ(0x000006b5u, ImmutableString("findLSB(20E").mangledNameHash());
+ ASSERT_EQ(0x000006b6u, ImmutableString("findLSB(20E").mangledNameHash());
ASSERT_EQ(0x0000039du, ImmutableString("findLSB(30E").mangledNameHash());
- ASSERT_EQ(0x0000083fu, ImmutableString("findMSB(00D").mangledNameHash());
+ ASSERT_EQ(0x00000840u, ImmutableString("findMSB(00D").mangledNameHash());
ASSERT_EQ(0x00000096u, ImmutableString("findMSB(10D").mangledNameHash());
- ASSERT_EQ(0x00000702u, ImmutableString("findMSB(20D").mangledNameHash());
- ASSERT_EQ(0x000007b1u, ImmutableString("findMSB(30D").mangledNameHash());
- ASSERT_EQ(0x00000840u, ImmutableString("findMSB(00E").mangledNameHash());
+ ASSERT_EQ(0x00000703u, ImmutableString("findMSB(20D").mangledNameHash());
+ ASSERT_EQ(0x000007b2u, ImmutableString("findMSB(30D").mangledNameHash());
+ ASSERT_EQ(0x00000841u, ImmutableString("findMSB(00E").mangledNameHash());
ASSERT_EQ(0x00000095u, ImmutableString("findMSB(10E").mangledNameHash());
ASSERT_EQ(0x0000000eu, ImmutableString("findMSB(20E").mangledNameHash());
- ASSERT_EQ(0x000007b0u, ImmutableString("findMSB(30E").mangledNameHash());
+ ASSERT_EQ(0x000007b1u, ImmutableString("findMSB(30E").mangledNameHash());
ASSERT_EQ(0x0000014cu, ImmutableString("uaddCarry(00E00E00E").mangledNameHash());
- ASSERT_EQ(0x00000625u, ImmutableString("uaddCarry(10E10E10E").mangledNameHash());
+ ASSERT_EQ(0x00000626u, ImmutableString("uaddCarry(10E10E10E").mangledNameHash());
ASSERT_EQ(0x00000227u, ImmutableString("uaddCarry(20E20E20E").mangledNameHash());
ASSERT_EQ(0x00000540u, ImmutableString("uaddCarry(30E30E30E").mangledNameHash());
ASSERT_EQ(0x0000055du, ImmutableString("usubBorrow(00E00E00E").mangledNameHash());
ASSERT_EQ(0x00000416u, ImmutableString("usubBorrow(10E10E10E").mangledNameHash());
ASSERT_EQ(0x000004e7u, ImmutableString("usubBorrow(20E20E20E").mangledNameHash());
- ASSERT_EQ(0x000005adu, ImmutableString("usubBorrow(30E30E30E").mangledNameHash());
- ASSERT_EQ(0x00000808u, ImmutableString("umulExtended(00E00E00E00E").mangledNameHash());
- ASSERT_EQ(0x0000058cu, ImmutableString("umulExtended(10E10E10E10E").mangledNameHash());
+ ASSERT_EQ(0x000005aeu, ImmutableString("usubBorrow(30E30E30E").mangledNameHash());
+ ASSERT_EQ(0x00000809u, ImmutableString("umulExtended(00E00E00E00E").mangledNameHash());
+ ASSERT_EQ(0x0000058du, ImmutableString("umulExtended(10E10E10E10E").mangledNameHash());
ASSERT_EQ(0x0000019fu, ImmutableString("umulExtended(20E20E20E20E").mangledNameHash());
- ASSERT_EQ(0x00000590u, ImmutableString("umulExtended(30E30E30E30E").mangledNameHash());
- ASSERT_EQ(0x00000681u, ImmutableString("imulExtended(00D00D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000591u, ImmutableString("umulExtended(30E30E30E30E").mangledNameHash());
+ ASSERT_EQ(0x00000682u, ImmutableString("imulExtended(00D00D00D00D").mangledNameHash());
ASSERT_EQ(0x0000035du, ImmutableString("imulExtended(10D10D10D10D").mangledNameHash());
ASSERT_EQ(0x000004d1u, ImmutableString("imulExtended(20D20D20D20D").mangledNameHash());
- ASSERT_EQ(0x0000067fu, ImmutableString("imulExtended(30D30D30D30D").mangledNameHash());
+ ASSERT_EQ(0x00000680u, ImmutableString("imulExtended(30D30D30D30D").mangledNameHash());
ASSERT_EQ(0x0000028du, ImmutableString("texture2D(00I10B").mangledNameHash());
ASSERT_EQ(0x00000004u, ImmutableString("texture2DProj(00I20B").mangledNameHash());
ASSERT_EQ(0x00000361u, ImmutableString("texture2DProj(00I30B").mangledNameHash());
ASSERT_EQ(0x0000014eu, ImmutableString("textureCube(00K20B").mangledNameHash());
ASSERT_EQ(0x00000385u, ImmutableString("texture1D(00g00B").mangledNameHash());
- ASSERT_EQ(0x0000067du, ImmutableString("texture1DProj(00g10B").mangledNameHash());
+ ASSERT_EQ(0x0000067eu, ImmutableString("texture1DProj(00g10B").mangledNameHash());
ASSERT_EQ(0x00000524u, ImmutableString("texture1DProj(00g30B").mangledNameHash());
- ASSERT_EQ(0x0000074du, ImmutableString("texture3D(00J20B").mangledNameHash());
- ASSERT_EQ(0x000005b3u, ImmutableString("texture3DProj(00J30B").mangledNameHash());
- ASSERT_EQ(0x00000801u, ImmutableString("shadow1D(00m20B").mangledNameHash());
- ASSERT_EQ(0x00000833u, ImmutableString("shadow1DProj(00m30B").mangledNameHash());
+ ASSERT_EQ(0x0000074eu, ImmutableString("texture3D(00J20B").mangledNameHash());
+ ASSERT_EQ(0x000005b4u, ImmutableString("texture3DProj(00J30B").mangledNameHash());
+ ASSERT_EQ(0x00000802u, ImmutableString("shadow1D(00m20B").mangledNameHash());
+ ASSERT_EQ(0x00000834u, ImmutableString("shadow1DProj(00m30B").mangledNameHash());
ASSERT_EQ(0x0000039fu, ImmutableString("shadow2D(00d20B").mangledNameHash());
- ASSERT_EQ(0x00000651u, ImmutableString("shadow2DProj(00d30B").mangledNameHash());
+ ASSERT_EQ(0x00000652u, ImmutableString("shadow2DProj(00d30B").mangledNameHash());
ASSERT_EQ(0x000003fcu, ImmutableString("texture2D(00M10B").mangledNameHash());
ASSERT_EQ(0x00000395u, ImmutableString("texture2DProj(00M20B").mangledNameHash());
ASSERT_EQ(0x00000453u, ImmutableString("texture2DProj(00M30B").mangledNameHash());
@@ -670,68 +670,68 @@
ASSERT_EQ(0x0000026fu, ImmutableString("texture2DGradEXT(00I10B10B10B").mangledNameHash());
ASSERT_EQ(0x000003ceu, ImmutableString("texture2DProjGradEXT(00I20B10B10B").mangledNameHash());
ASSERT_EQ(0x00000272u, ImmutableString("texture2DProjGradEXT(00I30B10B10B").mangledNameHash());
- ASSERT_EQ(0x0000075fu, ImmutableString("textureCubeGradEXT(00K20B20B20B").mangledNameHash());
- ASSERT_EQ(0x000006dfu, ImmutableString("texture2D(00I10B00B").mangledNameHash());
+ ASSERT_EQ(0x00000760u, ImmutableString("textureCubeGradEXT(00K20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x000006e0u, ImmutableString("texture2D(00I10B00B").mangledNameHash());
ASSERT_EQ(0x000000fdu, ImmutableString("texture2DProj(00I20B00B").mangledNameHash());
- ASSERT_EQ(0x0000075cu, ImmutableString("texture2DProj(00I30B00B").mangledNameHash());
+ ASSERT_EQ(0x0000075du, ImmutableString("texture2DProj(00I30B00B").mangledNameHash());
ASSERT_EQ(0x000001b5u, ImmutableString("textureCube(00K20B00B").mangledNameHash());
ASSERT_EQ(0x000004dcu, ImmutableString("texture3D(00J20B00B").mangledNameHash());
- ASSERT_EQ(0x000005a6u, ImmutableString("texture3DProj(00J30B00B").mangledNameHash());
+ ASSERT_EQ(0x000005a7u, ImmutableString("texture3DProj(00J30B00B").mangledNameHash());
ASSERT_EQ(0x00000440u, ImmutableString("texture3DLod(00J20B00B").mangledNameHash());
ASSERT_EQ(0x000002d4u, ImmutableString("texture3DProjLod(00J30B00B").mangledNameHash());
ASSERT_EQ(0x00000532u, ImmutableString("texture1D(00g00B00B").mangledNameHash());
ASSERT_EQ(0x000001f8u, ImmutableString("texture1DProj(00g10B00B").mangledNameHash());
- ASSERT_EQ(0x000005dau, ImmutableString("texture1DProj(00g30B00B").mangledNameHash());
+ ASSERT_EQ(0x000005dbu, ImmutableString("texture1DProj(00g30B00B").mangledNameHash());
ASSERT_EQ(0x000000adu, ImmutableString("shadow1D(00m20B00B").mangledNameHash());
ASSERT_EQ(0x000004e9u, ImmutableString("shadow1DProj(00m30B00B").mangledNameHash());
ASSERT_EQ(0x0000022bu, ImmutableString("shadow2D(00d20B00B").mangledNameHash());
- ASSERT_EQ(0x000007f1u, ImmutableString("shadow2DProj(00d30B00B").mangledNameHash());
- ASSERT_EQ(0x000005bau, ImmutableString("dFdx(00B").mangledNameHash());
+ ASSERT_EQ(0x000007f2u, ImmutableString("shadow2DProj(00d30B00B").mangledNameHash());
+ ASSERT_EQ(0x000005bbu, ImmutableString("dFdx(00B").mangledNameHash());
ASSERT_EQ(0x00000521u, ImmutableString("dFdx(10B").mangledNameHash());
- ASSERT_EQ(0x000006fdu, ImmutableString("dFdx(20B").mangledNameHash());
- ASSERT_EQ(0x00000670u, ImmutableString("dFdx(30B").mangledNameHash());
- ASSERT_EQ(0x0000067bu, ImmutableString("dFdy(00B").mangledNameHash());
- ASSERT_EQ(0x00000713u, ImmutableString("dFdy(10B").mangledNameHash());
+ ASSERT_EQ(0x000006feu, ImmutableString("dFdx(20B").mangledNameHash());
+ ASSERT_EQ(0x00000671u, ImmutableString("dFdx(30B").mangledNameHash());
+ ASSERT_EQ(0x0000067cu, ImmutableString("dFdy(00B").mangledNameHash());
+ ASSERT_EQ(0x00000714u, ImmutableString("dFdy(10B").mangledNameHash());
ASSERT_EQ(0x000000f6u, ImmutableString("dFdy(20B").mangledNameHash());
ASSERT_EQ(0x000001a8u, ImmutableString("dFdy(30B").mangledNameHash());
- ASSERT_EQ(0x00000712u, ImmutableString("fwidth(00B").mangledNameHash());
- ASSERT_EQ(0x0000067au, ImmutableString("fwidth(10B").mangledNameHash());
- ASSERT_EQ(0x00000847u, ImmutableString("fwidth(20B").mangledNameHash());
- ASSERT_EQ(0x000007b3u, ImmutableString("fwidth(30B").mangledNameHash());
- ASSERT_EQ(0x00000742u, ImmutableString("texture2DLodEXT(00I10B00B").mangledNameHash());
+ ASSERT_EQ(0x00000713u, ImmutableString("fwidth(00B").mangledNameHash());
+ ASSERT_EQ(0x0000067bu, ImmutableString("fwidth(10B").mangledNameHash());
+ ASSERT_EQ(0x00000848u, ImmutableString("fwidth(20B").mangledNameHash());
+ ASSERT_EQ(0x000007b4u, ImmutableString("fwidth(30B").mangledNameHash());
+ ASSERT_EQ(0x00000743u, ImmutableString("texture2DLodEXT(00I10B00B").mangledNameHash());
ASSERT_EQ(0x000001afu, ImmutableString("texture2DProjLodEXT(00I20B00B").mangledNameHash());
- ASSERT_EQ(0x0000073du, ImmutableString("texture2DProjLodEXT(00I30B00B").mangledNameHash());
+ ASSERT_EQ(0x0000073eu, ImmutableString("texture2DProjLodEXT(00I30B00B").mangledNameHash());
ASSERT_EQ(0x00000400u, ImmutableString("textureCubeLodEXT(00K20B00B").mangledNameHash());
ASSERT_EQ(0x00000389u, ImmutableString("texture2DLod(00I10B00B").mangledNameHash());
ASSERT_EQ(0x00000458u, ImmutableString("texture2DProjLod(00I20B00B").mangledNameHash());
- ASSERT_EQ(0x000005eeu, ImmutableString("texture2DProjLod(00I30B00B").mangledNameHash());
+ ASSERT_EQ(0x000005efu, ImmutableString("texture2DProjLod(00I30B00B").mangledNameHash());
ASSERT_EQ(0x000001a3u, ImmutableString("textureCubeLod(00K20B00B").mangledNameHash());
ASSERT_EQ(0x000004ddu, ImmutableString("texture1DLod(00g00B00B").mangledNameHash());
- ASSERT_EQ(0x00000679u, ImmutableString("texture1DProjLod(00g10B00B").mangledNameHash());
+ ASSERT_EQ(0x0000067au, ImmutableString("texture1DProjLod(00g10B00B").mangledNameHash());
ASSERT_EQ(0x00000502u, ImmutableString("texture1DProjLod(00g30B00B").mangledNameHash());
ASSERT_EQ(0x0000044cu, ImmutableString("shadow1DLod(00m20B00B").mangledNameHash());
- ASSERT_EQ(0x00000642u, ImmutableString("shadow1DProjLod(00m30B00B").mangledNameHash());
- ASSERT_EQ(0x0000067cu, ImmutableString("shadow2DLod(00d20B00B").mangledNameHash());
- ASSERT_EQ(0x0000069au, ImmutableString("shadow2DProjLod(00d30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000643u, ImmutableString("shadow1DProjLod(00m30B00B").mangledNameHash());
+ ASSERT_EQ(0x0000067du, ImmutableString("shadow2DLod(00d20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000069bu, ImmutableString("shadow2DProjLod(00d30B00B").mangledNameHash());
ASSERT_EQ(0x00000113u, ImmutableString("texture(00I10B").mangledNameHash());
ASSERT_EQ(0x00000174u, ImmutableString("texture(00R10B").mangledNameHash());
- ASSERT_EQ(0x000007a3u, ImmutableString("texture(00X10B").mangledNameHash());
- ASSERT_EQ(0x0000061eu, ImmutableString("texture(00J20B").mangledNameHash());
+ ASSERT_EQ(0x000007a4u, ImmutableString("texture(00X10B").mangledNameHash());
+ ASSERT_EQ(0x0000061fu, ImmutableString("texture(00J20B").mangledNameHash());
ASSERT_EQ(0x000000eau, ImmutableString("texture(00S20B").mangledNameHash());
ASSERT_EQ(0x00000289u, ImmutableString("texture(00Y20B").mangledNameHash());
- ASSERT_EQ(0x00000813u, ImmutableString("texture(00K20B").mangledNameHash());
- ASSERT_EQ(0x000006b1u, ImmutableString("texture(00T20B").mangledNameHash());
- ASSERT_EQ(0x00000811u, ImmutableString("texture(00Z20B").mangledNameHash());
- ASSERT_EQ(0x000006feu, ImmutableString("texture(00L20B").mangledNameHash());
+ ASSERT_EQ(0x00000814u, ImmutableString("texture(00K20B").mangledNameHash());
+ ASSERT_EQ(0x000006b2u, ImmutableString("texture(00T20B").mangledNameHash());
+ ASSERT_EQ(0x00000812u, ImmutableString("texture(00Z20B").mangledNameHash());
+ ASSERT_EQ(0x000006ffu, ImmutableString("texture(00L20B").mangledNameHash());
ASSERT_EQ(0x0000008bu, ImmutableString("texture(00U20B").mangledNameHash());
- ASSERT_EQ(0x0000080bu, ImmutableString("texture(00a20B").mangledNameHash());
+ ASSERT_EQ(0x0000080cu, ImmutableString("texture(00a20B").mangledNameHash());
ASSERT_EQ(0x00000025u, ImmutableString("texture(00d20B").mangledNameHash());
ASSERT_EQ(0x000001f0u, ImmutableString("texture(00e30B").mangledNameHash());
ASSERT_EQ(0x000001ddu, ImmutableString("texture(00f30B").mangledNameHash());
- ASSERT_EQ(0x00000824u, ImmutableString("texture(00g00B").mangledNameHash());
+ ASSERT_EQ(0x00000825u, ImmutableString("texture(00g00B").mangledNameHash());
ASSERT_EQ(0x00000253u, ImmutableString("texture(00o00B").mangledNameHash());
ASSERT_EQ(0x00000098u, ImmutableString("texture(00t00B").mangledNameHash());
- ASSERT_EQ(0x00000815u, ImmutableString("texture(00m20B").mangledNameHash());
+ ASSERT_EQ(0x00000816u, ImmutableString("texture(00m20B").mangledNameHash());
ASSERT_EQ(0x000000c0u, ImmutableString("texture(00h20B").mangledNameHash());
ASSERT_EQ(0x000000e8u, ImmutableString("texture(00p20B").mangledNameHash());
ASSERT_EQ(0x00000470u, ImmutableString("texture(00u20B").mangledNameHash());
@@ -739,66 +739,66 @@
ASSERT_EQ(0x000003e0u, ImmutableString("texture(00q10B").mangledNameHash());
ASSERT_EQ(0x00000563u, ImmutableString("texture(00v10B").mangledNameHash());
ASSERT_EQ(0x00000239u, ImmutableString("texture(00n20B").mangledNameHash());
- ASSERT_EQ(0x00000678u, ImmutableString("texture(00l30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000679u, ImmutableString("texture(00l30B00B").mangledNameHash());
ASSERT_EQ(0x00000267u, ImmutableString("textureProj(00I20B").mangledNameHash());
ASSERT_EQ(0x00000212u, ImmutableString("textureProj(00R20B").mangledNameHash());
ASSERT_EQ(0x000002cfu, ImmutableString("textureProj(00X20B").mangledNameHash());
ASSERT_EQ(0x00000301u, ImmutableString("textureProj(00I30B").mangledNameHash());
- ASSERT_EQ(0x00000832u, ImmutableString("textureProj(00R30B").mangledNameHash());
- ASSERT_EQ(0x0000083eu, ImmutableString("textureProj(00X30B").mangledNameHash());
+ ASSERT_EQ(0x00000833u, ImmutableString("textureProj(00R30B").mangledNameHash());
+ ASSERT_EQ(0x0000083fu, ImmutableString("textureProj(00X30B").mangledNameHash());
ASSERT_EQ(0x000002e1u, ImmutableString("textureProj(00J30B").mangledNameHash());
ASSERT_EQ(0x000001a7u, ImmutableString("textureProj(00S30B").mangledNameHash());
ASSERT_EQ(0x000000f7u, ImmutableString("textureProj(00Y30B").mangledNameHash());
- ASSERT_EQ(0x000007ffu, ImmutableString("textureProj(00d30B").mangledNameHash());
+ ASSERT_EQ(0x00000800u, ImmutableString("textureProj(00d30B").mangledNameHash());
ASSERT_EQ(0x000002fau, ImmutableString("textureProj(00g10B").mangledNameHash());
- ASSERT_EQ(0x00000656u, ImmutableString("textureProj(00o10B").mangledNameHash());
+ ASSERT_EQ(0x00000657u, ImmutableString("textureProj(00o10B").mangledNameHash());
ASSERT_EQ(0x00000064u, ImmutableString("textureProj(00t10B").mangledNameHash());
- ASSERT_EQ(0x000007d8u, ImmutableString("textureProj(00g30B").mangledNameHash());
+ ASSERT_EQ(0x000007d9u, ImmutableString("textureProj(00g30B").mangledNameHash());
ASSERT_EQ(0x00000127u, ImmutableString("textureProj(00o30B").mangledNameHash());
- ASSERT_EQ(0x00000772u, ImmutableString("textureProj(00t30B").mangledNameHash());
+ ASSERT_EQ(0x00000773u, ImmutableString("textureProj(00t30B").mangledNameHash());
ASSERT_EQ(0x00000102u, ImmutableString("textureProj(00m30B").mangledNameHash());
ASSERT_EQ(0x00000515u, ImmutableString("textureProj(00q20B").mangledNameHash());
- ASSERT_EQ(0x000006abu, ImmutableString("textureProj(00v20B").mangledNameHash());
- ASSERT_EQ(0x000005abu, ImmutableString("textureProj(00q30B").mangledNameHash());
- ASSERT_EQ(0x00000608u, ImmutableString("textureProj(00v30B").mangledNameHash());
+ ASSERT_EQ(0x000006acu, ImmutableString("textureProj(00v20B").mangledNameHash());
+ ASSERT_EQ(0x000005acu, ImmutableString("textureProj(00q30B").mangledNameHash());
+ ASSERT_EQ(0x00000609u, ImmutableString("textureProj(00v30B").mangledNameHash());
ASSERT_EQ(0x000000e6u, ImmutableString("textureProj(00n30B").mangledNameHash());
ASSERT_EQ(0x000000d5u, ImmutableString("textureLod(00I10B00B").mangledNameHash());
ASSERT_EQ(0x00000383u, ImmutableString("textureLod(00R10B00B").mangledNameHash());
ASSERT_EQ(0x000000c6u, ImmutableString("textureLod(00X10B00B").mangledNameHash());
ASSERT_EQ(0x000004a7u, ImmutableString("textureLod(00J20B00B").mangledNameHash());
ASSERT_EQ(0x000003d0u, ImmutableString("textureLod(00S20B00B").mangledNameHash());
- ASSERT_EQ(0x00000686u, ImmutableString("textureLod(00Y20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000687u, ImmutableString("textureLod(00Y20B00B").mangledNameHash());
ASSERT_EQ(0x00000539u, ImmutableString("textureLod(00K20B00B").mangledNameHash());
- ASSERT_EQ(0x000006edu, ImmutableString("textureLod(00T20B00B").mangledNameHash());
- ASSERT_EQ(0x000005cau, ImmutableString("textureLod(00Z20B00B").mangledNameHash());
+ ASSERT_EQ(0x000006eeu, ImmutableString("textureLod(00T20B00B").mangledNameHash());
+ ASSERT_EQ(0x000005cbu, ImmutableString("textureLod(00Z20B00B").mangledNameHash());
ASSERT_EQ(0x00000233u, ImmutableString("textureLod(00L20B00B").mangledNameHash());
ASSERT_EQ(0x00000202u, ImmutableString("textureLod(00U20B00B").mangledNameHash());
ASSERT_EQ(0x0000036au, ImmutableString("textureLod(00a20B00B").mangledNameHash());
- ASSERT_EQ(0x00000717u, ImmutableString("textureLod(00d20B00B").mangledNameHash());
- ASSERT_EQ(0x00000577u, ImmutableString("textureLod(00g00B00B").mangledNameHash());
- ASSERT_EQ(0x000007cdu, ImmutableString("textureLod(00o00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000718u, ImmutableString("textureLod(00d20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000578u, ImmutableString("textureLod(00g00B00B").mangledNameHash());
+ ASSERT_EQ(0x000007ceu, ImmutableString("textureLod(00o00B00B").mangledNameHash());
ASSERT_EQ(0x00000011u, ImmutableString("textureLod(00t00B00B").mangledNameHash());
ASSERT_EQ(0x00000338u, ImmutableString("textureLod(00m20B00B").mangledNameHash());
- ASSERT_EQ(0x00000729u, ImmutableString("textureLod(00h10B00B").mangledNameHash());
+ ASSERT_EQ(0x0000072au, ImmutableString("textureLod(00h10B00B").mangledNameHash());
ASSERT_EQ(0x00000206u, ImmutableString("textureLod(00p10B00B").mangledNameHash());
ASSERT_EQ(0x0000056cu, ImmutableString("textureLod(00u10B00B").mangledNameHash());
ASSERT_EQ(0x00000160u, ImmutableString("textureLod(00i20B00B").mangledNameHash());
- ASSERT_EQ(0x00000722u, ImmutableString("textureLod(00k30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000723u, ImmutableString("textureLod(00k30B00B").mangledNameHash());
ASSERT_EQ(0x00000309u, ImmutableString("textureLod(00s30B00B").mangledNameHash());
- ASSERT_EQ(0x00000785u, ImmutableString("textureLod(00x30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000786u, ImmutableString("textureLod(00x30B00B").mangledNameHash());
ASSERT_EQ(0x000004abu, ImmutableString("textureSize(00I00D").mangledNameHash());
- ASSERT_EQ(0x000006c5u, ImmutableString("textureSize(00R00D").mangledNameHash());
+ ASSERT_EQ(0x000006c6u, ImmutableString("textureSize(00R00D").mangledNameHash());
ASSERT_EQ(0x00000427u, ImmutableString("textureSize(00X00D").mangledNameHash());
- ASSERT_EQ(0x00000737u, ImmutableString("textureSize(00J00D").mangledNameHash());
+ ASSERT_EQ(0x00000738u, ImmutableString("textureSize(00J00D").mangledNameHash());
ASSERT_EQ(0x000001d7u, ImmutableString("textureSize(00S00D").mangledNameHash());
ASSERT_EQ(0x0000055bu, ImmutableString("textureSize(00Y00D").mangledNameHash());
ASSERT_EQ(0x00000020u, ImmutableString("textureSize(00K00D").mangledNameHash());
ASSERT_EQ(0x000001f2u, ImmutableString("textureSize(00T00D").mangledNameHash());
- ASSERT_EQ(0x000007e7u, ImmutableString("textureSize(00Z00D").mangledNameHash());
+ ASSERT_EQ(0x000007e8u, ImmutableString("textureSize(00Z00D").mangledNameHash());
ASSERT_EQ(0x000001a4u, ImmutableString("textureSize(00L00D").mangledNameHash());
ASSERT_EQ(0x00000541u, ImmutableString("textureSize(00U00D").mangledNameHash());
ASSERT_EQ(0x000001cfu, ImmutableString("textureSize(00a00D").mangledNameHash());
- ASSERT_EQ(0x00000622u, ImmutableString("textureSize(00d00D").mangledNameHash());
+ ASSERT_EQ(0x00000623u, ImmutableString("textureSize(00d00D").mangledNameHash());
ASSERT_EQ(0x0000010bu, ImmutableString("textureSize(00e00D").mangledNameHash());
ASSERT_EQ(0x000001b8u, ImmutableString("textureSize(00f00D").mangledNameHash());
ASSERT_EQ(0x000004feu, ImmutableString("textureSize(00g00D").mangledNameHash());
@@ -806,93 +806,93 @@
ASSERT_EQ(0x000001dbu, ImmutableString("textureSize(00t00D").mangledNameHash());
ASSERT_EQ(0x000002bau, ImmutableString("textureSize(00m00D").mangledNameHash());
ASSERT_EQ(0x0000051au, ImmutableString("textureSize(00k00D").mangledNameHash());
- ASSERT_EQ(0x00000665u, ImmutableString("textureSize(00s00D").mangledNameHash());
+ ASSERT_EQ(0x00000666u, ImmutableString("textureSize(00s00D").mangledNameHash());
ASSERT_EQ(0x00000188u, ImmutableString("textureSize(00x00D").mangledNameHash());
- ASSERT_EQ(0x000007ccu, ImmutableString("textureSize(00l00D").mangledNameHash());
- ASSERT_EQ(0x00000792u, ImmutableString("textureSize(00O").mangledNameHash());
- ASSERT_EQ(0x0000078cu, ImmutableString("textureSize(00q").mangledNameHash());
- ASSERT_EQ(0x0000078fu, ImmutableString("textureSize(00v").mangledNameHash());
- ASSERT_EQ(0x00000787u, ImmutableString("textureSize(00n").mangledNameHash());
+ ASSERT_EQ(0x000007cdu, ImmutableString("textureSize(00l00D").mangledNameHash());
+ ASSERT_EQ(0x00000793u, ImmutableString("textureSize(00O").mangledNameHash());
+ ASSERT_EQ(0x0000078du, ImmutableString("textureSize(00q").mangledNameHash());
+ ASSERT_EQ(0x00000790u, ImmutableString("textureSize(00v").mangledNameHash());
+ ASSERT_EQ(0x00000788u, ImmutableString("textureSize(00n").mangledNameHash());
ASSERT_EQ(0x00000021u, ImmutableString("textureSize(00h00D").mangledNameHash());
ASSERT_EQ(0x00000033u, ImmutableString("textureSize(00p00D").mangledNameHash());
ASSERT_EQ(0x000001f4u, ImmutableString("textureSize(00u00D").mangledNameHash());
ASSERT_EQ(0x0000014au, ImmutableString("textureSize(00i00D").mangledNameHash());
- ASSERT_EQ(0x00000786u, ImmutableString("textureSize(00j").mangledNameHash());
- ASSERT_EQ(0x0000078du, ImmutableString("textureSize(00r").mangledNameHash());
- ASSERT_EQ(0x0000078eu, ImmutableString("textureSize(00w").mangledNameHash());
- ASSERT_EQ(0x000006adu, ImmutableString("textureProjLod(00I20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000787u, ImmutableString("textureSize(00j").mangledNameHash());
+ ASSERT_EQ(0x0000078eu, ImmutableString("textureSize(00r").mangledNameHash());
+ ASSERT_EQ(0x0000078fu, ImmutableString("textureSize(00w").mangledNameHash());
+ ASSERT_EQ(0x000006aeu, ImmutableString("textureProjLod(00I20B00B").mangledNameHash());
ASSERT_EQ(0x000004bbu, ImmutableString("textureProjLod(00R20B00B").mangledNameHash());
- ASSERT_EQ(0x0000079cu, ImmutableString("textureProjLod(00X20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000079du, ImmutableString("textureProjLod(00X20B00B").mangledNameHash());
ASSERT_EQ(0x00000104u, ImmutableString("textureProjLod(00I30B00B").mangledNameHash());
ASSERT_EQ(0x00000334u, ImmutableString("textureProjLod(00R30B00B").mangledNameHash());
- ASSERT_EQ(0x000005a8u, ImmutableString("textureProjLod(00X30B00B").mangledNameHash());
- ASSERT_EQ(0x000006cdu, ImmutableString("textureProjLod(00J30B00B").mangledNameHash());
+ ASSERT_EQ(0x000005a9u, ImmutableString("textureProjLod(00X30B00B").mangledNameHash());
+ ASSERT_EQ(0x000006ceu, ImmutableString("textureProjLod(00J30B00B").mangledNameHash());
ASSERT_EQ(0x000003f2u, ImmutableString("textureProjLod(00S30B00B").mangledNameHash());
ASSERT_EQ(0x000001c0u, ImmutableString("textureProjLod(00Y30B00B").mangledNameHash());
ASSERT_EQ(0x000002abu, ImmutableString("textureProjLod(00d30B00B").mangledNameHash());
- ASSERT_EQ(0x0000081eu, ImmutableString("textureProjLod(00g10B00B").mangledNameHash());
+ ASSERT_EQ(0x0000081fu, ImmutableString("textureProjLod(00g10B00B").mangledNameHash());
ASSERT_EQ(0x0000018bu, ImmutableString("textureProjLod(00o10B00B").mangledNameHash());
ASSERT_EQ(0x00000516u, ImmutableString("textureProjLod(00t10B00B").mangledNameHash());
ASSERT_EQ(0x0000050au, ImmutableString("textureProjLod(00g30B00B").mangledNameHash());
- ASSERT_EQ(0x000006fau, ImmutableString("textureProjLod(00o30B00B").mangledNameHash());
- ASSERT_EQ(0x000005deu, ImmutableString("textureProjLod(00t30B00B").mangledNameHash());
+ ASSERT_EQ(0x000006fbu, ImmutableString("textureProjLod(00o30B00B").mangledNameHash());
+ ASSERT_EQ(0x000005dfu, ImmutableString("textureProjLod(00t30B00B").mangledNameHash());
ASSERT_EQ(0x0000040au, ImmutableString("textureProjLod(00m30B00B").mangledNameHash());
ASSERT_EQ(0x0000004eu, ImmutableString("texelFetch(00I10D00D").mangledNameHash());
ASSERT_EQ(0x000001dfu, ImmutableString("texelFetch(00R10D00D").mangledNameHash());
ASSERT_EQ(0x000003bdu, ImmutableString("texelFetch(00X10D00D").mangledNameHash());
ASSERT_EQ(0x0000021au, ImmutableString("texelFetch(00J20D00D").mangledNameHash());
- ASSERT_EQ(0x000007b5u, ImmutableString("texelFetch(00S20D00D").mangledNameHash());
+ ASSERT_EQ(0x000007b6u, ImmutableString("texelFetch(00S20D00D").mangledNameHash());
ASSERT_EQ(0x000000ecu, ImmutableString("texelFetch(00Y20D00D").mangledNameHash());
ASSERT_EQ(0x0000053cu, ImmutableString("texelFetch(00L20D00D").mangledNameHash());
ASSERT_EQ(0x000002e8u, ImmutableString("texelFetch(00U20D00D").mangledNameHash());
ASSERT_EQ(0x0000010cu, ImmutableString("texelFetch(00a20D00D").mangledNameHash());
- ASSERT_EQ(0x000005f1u, ImmutableString("texelFetch(00g00D00D").mangledNameHash());
+ ASSERT_EQ(0x000005f2u, ImmutableString("texelFetch(00g00D00D").mangledNameHash());
ASSERT_EQ(0x00000006u, ImmutableString("texelFetch(00o00D00D").mangledNameHash());
ASSERT_EQ(0x00000325u, ImmutableString("texelFetch(00t00D00D").mangledNameHash());
- ASSERT_EQ(0x000007a7u, ImmutableString("texelFetch(00O10D").mangledNameHash());
+ ASSERT_EQ(0x000007a8u, ImmutableString("texelFetch(00O10D").mangledNameHash());
ASSERT_EQ(0x00000336u, ImmutableString("texelFetch(00q10D").mangledNameHash());
ASSERT_EQ(0x000001efu, ImmutableString("texelFetch(00v10D").mangledNameHash());
- ASSERT_EQ(0x0000069eu, ImmutableString("texelFetch(00h10D00D").mangledNameHash());
- ASSERT_EQ(0x000007efu, ImmutableString("texelFetch(00p10D00D").mangledNameHash());
- ASSERT_EQ(0x0000064au, ImmutableString("texelFetch(00u10D00D").mangledNameHash());
+ ASSERT_EQ(0x0000069fu, ImmutableString("texelFetch(00h10D00D").mangledNameHash());
+ ASSERT_EQ(0x000007f0u, ImmutableString("texelFetch(00p10D00D").mangledNameHash());
+ ASSERT_EQ(0x0000064bu, ImmutableString("texelFetch(00u10D00D").mangledNameHash());
ASSERT_EQ(0x00000078u, ImmutableString("texelFetch(00j00D").mangledNameHash());
- ASSERT_EQ(0x000005bfu, ImmutableString("texelFetch(00r00D").mangledNameHash());
+ ASSERT_EQ(0x000005c0u, ImmutableString("texelFetch(00r00D").mangledNameHash());
ASSERT_EQ(0x0000015au, ImmutableString("texelFetch(00w00D").mangledNameHash());
ASSERT_EQ(0x00000456u, ImmutableString("textureGrad(00I10B10B10B").mangledNameHash());
ASSERT_EQ(0x000001e2u, ImmutableString("textureGrad(00R10B10B10B").mangledNameHash());
ASSERT_EQ(0x00000166u, ImmutableString("textureGrad(00X10B10B10B").mangledNameHash());
- ASSERT_EQ(0x00000745u, ImmutableString("textureGrad(00J20B20B20B").mangledNameHash());
- ASSERT_EQ(0x000006f4u, ImmutableString("textureGrad(00S20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x00000746u, ImmutableString("textureGrad(00J20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x000006f5u, ImmutableString("textureGrad(00S20B20B20B").mangledNameHash());
ASSERT_EQ(0x000002cbu, ImmutableString("textureGrad(00Y20B20B20B").mangledNameHash());
- ASSERT_EQ(0x000007b4u, ImmutableString("textureGrad(00K20B20B20B").mangledNameHash());
+ ASSERT_EQ(0x000007b5u, ImmutableString("textureGrad(00K20B20B20B").mangledNameHash());
ASSERT_EQ(0x000001f7u, ImmutableString("textureGrad(00T20B20B20B").mangledNameHash());
ASSERT_EQ(0x000000d0u, ImmutableString("textureGrad(00Z20B20B20B").mangledNameHash());
ASSERT_EQ(0x000002cau, ImmutableString("textureGrad(00I00B00B00B").mangledNameHash());
ASSERT_EQ(0x00000423u, ImmutableString("textureGrad(00R00B00B00B").mangledNameHash());
ASSERT_EQ(0x00000070u, ImmutableString("textureGrad(00X00B00B00B").mangledNameHash());
ASSERT_EQ(0x000004a9u, ImmutableString("textureGrad(00O10B10B10B").mangledNameHash());
- ASSERT_EQ(0x000005b8u, ImmutableString("textureGrad(00q10B10B10B").mangledNameHash());
+ ASSERT_EQ(0x000005b9u, ImmutableString("textureGrad(00q10B10B10B").mangledNameHash());
ASSERT_EQ(0x00000073u, ImmutableString("textureGrad(00v10B10B10B").mangledNameHash());
ASSERT_EQ(0x000002eeu, ImmutableString("textureGrad(00n20B10B10B").mangledNameHash());
- ASSERT_EQ(0x000006a5u, ImmutableString("textureGrad(00d20B10B10B").mangledNameHash());
- ASSERT_EQ(0x00000736u, ImmutableString("textureGrad(00e30B20B20B").mangledNameHash());
+ ASSERT_EQ(0x000006a6u, ImmutableString("textureGrad(00d20B10B10B").mangledNameHash());
+ ASSERT_EQ(0x00000737u, ImmutableString("textureGrad(00e30B20B20B").mangledNameHash());
ASSERT_EQ(0x00000485u, ImmutableString("textureGrad(00L20B10B10B").mangledNameHash());
ASSERT_EQ(0x00000341u, ImmutableString("textureGrad(00U20B10B10B").mangledNameHash());
ASSERT_EQ(0x00000317u, ImmutableString("textureGrad(00a20B10B10B").mangledNameHash());
- ASSERT_EQ(0x00000594u, ImmutableString("textureGrad(00f30B10B10B").mangledNameHash());
- ASSERT_EQ(0x000006d7u, ImmutableString("textureGrad(00m20B00B00B").mangledNameHash());
- ASSERT_EQ(0x000005d8u, ImmutableString("textureGrad(00h10B00B00B").mangledNameHash());
- ASSERT_EQ(0x000007bfu, ImmutableString("textureGrad(00p10B00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000595u, ImmutableString("textureGrad(00f30B10B10B").mangledNameHash());
+ ASSERT_EQ(0x000006d8u, ImmutableString("textureGrad(00m20B00B00B").mangledNameHash());
+ ASSERT_EQ(0x000005d9u, ImmutableString("textureGrad(00h10B00B00B").mangledNameHash());
+ ASSERT_EQ(0x000007c0u, ImmutableString("textureGrad(00p10B00B00B").mangledNameHash());
ASSERT_EQ(0x00000496u, ImmutableString("textureGrad(00u10B00B00B").mangledNameHash());
ASSERT_EQ(0x000002f9u, ImmutableString("textureGrad(00i20B00B00B").mangledNameHash());
- ASSERT_EQ(0x0000057du, ImmutableString("textureGrad(00k30B20B20B").mangledNameHash());
- ASSERT_EQ(0x000007acu, ImmutableString("textureGrad(00s30B20B20B").mangledNameHash());
- ASSERT_EQ(0x000006f8u, ImmutableString("textureGrad(00x30B20B20B").mangledNameHash());
+ ASSERT_EQ(0x0000057eu, ImmutableString("textureGrad(00k30B20B20B").mangledNameHash());
+ ASSERT_EQ(0x000007adu, ImmutableString("textureGrad(00s30B20B20B").mangledNameHash());
+ ASSERT_EQ(0x000006f9u, ImmutableString("textureGrad(00x30B20B20B").mangledNameHash());
ASSERT_EQ(0x000003f9u, ImmutableString("textureProjGrad(00I20B10B10B").mangledNameHash());
ASSERT_EQ(0x000003f3u, ImmutableString("textureProjGrad(00R20B10B10B").mangledNameHash());
ASSERT_EQ(0x00000559u, ImmutableString("textureProjGrad(00X20B10B10B").mangledNameHash());
- ASSERT_EQ(0x0000066du, ImmutableString("textureProjGrad(00I30B10B10B").mangledNameHash());
- ASSERT_EQ(0x000006eeu, ImmutableString("textureProjGrad(00R30B10B10B").mangledNameHash());
+ ASSERT_EQ(0x0000066eu, ImmutableString("textureProjGrad(00I30B10B10B").mangledNameHash());
+ ASSERT_EQ(0x000006efu, ImmutableString("textureProjGrad(00R30B10B10B").mangledNameHash());
ASSERT_EQ(0x00000228u, ImmutableString("textureProjGrad(00X30B10B10B").mangledNameHash());
ASSERT_EQ(0x000000c3u, ImmutableString("textureProjGrad(00J30B20B20B").mangledNameHash());
ASSERT_EQ(0x00000045u, ImmutableString("textureProjGrad(00S30B20B20B").mangledNameHash());
@@ -900,18 +900,18 @@
ASSERT_EQ(0x00000322u, ImmutableString("textureProjGrad(00d30B10B10B").mangledNameHash());
ASSERT_EQ(0x000002d8u, ImmutableString("textureProjGrad(00g10B00B00B").mangledNameHash());
ASSERT_EQ(0x0000035eu, ImmutableString("textureProjGrad(00o10B00B00B").mangledNameHash());
- ASSERT_EQ(0x0000063du, ImmutableString("textureProjGrad(00t10B00B00B").mangledNameHash());
- ASSERT_EQ(0x00000650u, ImmutableString("textureProjGrad(00g30B00B00B").mangledNameHash());
+ ASSERT_EQ(0x0000063eu, ImmutableString("textureProjGrad(00t10B00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000651u, ImmutableString("textureProjGrad(00g30B00B00B").mangledNameHash());
ASSERT_EQ(0x00000489u, ImmutableString("textureProjGrad(00o30B00B00B").mangledNameHash());
ASSERT_EQ(0x000000b2u, ImmutableString("textureProjGrad(00t30B00B00B").mangledNameHash());
ASSERT_EQ(0x000004a4u, ImmutableString("textureProjGrad(00m30B00B00B").mangledNameHash());
- ASSERT_EQ(0x00000609u, ImmutableString("textureProjGrad(00O20B10B10B").mangledNameHash());
+ ASSERT_EQ(0x0000060au, ImmutableString("textureProjGrad(00O20B10B10B").mangledNameHash());
ASSERT_EQ(0x00000372u, ImmutableString("textureProjGrad(00q20B10B10B").mangledNameHash());
ASSERT_EQ(0x000003f1u, ImmutableString("textureProjGrad(00v20B10B10B").mangledNameHash());
- ASSERT_EQ(0x000007f7u, ImmutableString("textureProjGrad(00O30B10B10B").mangledNameHash());
+ ASSERT_EQ(0x000007f8u, ImmutableString("textureProjGrad(00O30B10B10B").mangledNameHash());
ASSERT_EQ(0x0000022fu, ImmutableString("textureProjGrad(00q30B10B10B").mangledNameHash());
ASSERT_EQ(0x0000033au, ImmutableString("textureProjGrad(00v30B10B10B").mangledNameHash());
- ASSERT_EQ(0x0000073au, ImmutableString("textureProjGrad(00n30B10B10B").mangledNameHash());
+ ASSERT_EQ(0x0000073bu, ImmutableString("textureProjGrad(00n30B10B10B").mangledNameHash());
ASSERT_EQ(0x000004c9u, ImmutableString("textureQueryLevels(00g").mangledNameHash());
ASSERT_EQ(0x000004c2u, ImmutableString("textureQueryLevels(00o").mangledNameHash());
ASSERT_EQ(0x000004cfu, ImmutableString("textureQueryLevels(00t").mangledNameHash());
@@ -945,87 +945,87 @@
ASSERT_EQ(0x00000433u, ImmutableString("textureSamples(00Q").mangledNameHash());
ASSERT_EQ(0x0000022eu, ImmutableString("textureSamples(00W").mangledNameHash());
ASSERT_EQ(0x000003e2u, ImmutableString("textureSamples(00c").mangledNameHash());
- ASSERT_EQ(0x00000798u, ImmutableString("textureSize(00P").mangledNameHash());
+ ASSERT_EQ(0x00000799u, ImmutableString("textureSize(00P").mangledNameHash());
ASSERT_EQ(0x00000397u, ImmutableString("textureSize(00V").mangledNameHash());
- ASSERT_EQ(0x0000078au, ImmutableString("textureSize(00b").mangledNameHash());
- ASSERT_EQ(0x00000797u, ImmutableString("textureSize(00Q").mangledNameHash());
- ASSERT_EQ(0x0000079bu, ImmutableString("textureSize(00W").mangledNameHash());
- ASSERT_EQ(0x00000789u, ImmutableString("textureSize(00c").mangledNameHash());
+ ASSERT_EQ(0x0000078bu, ImmutableString("textureSize(00b").mangledNameHash());
+ ASSERT_EQ(0x00000798u, ImmutableString("textureSize(00Q").mangledNameHash());
+ ASSERT_EQ(0x0000079cu, ImmutableString("textureSize(00W").mangledNameHash());
+ ASSERT_EQ(0x0000078au, ImmutableString("textureSize(00c").mangledNameHash());
ASSERT_EQ(0x0000048bu, ImmutableString("texelFetch(00P10D00D").mangledNameHash());
ASSERT_EQ(0x00000503u, ImmutableString("texelFetch(00V10D00D").mangledNameHash());
ASSERT_EQ(0x0000045bu, ImmutableString("texelFetch(00b10D00D").mangledNameHash());
- ASSERT_EQ(0x000005e3u, ImmutableString("texelFetch(00Q20D00D").mangledNameHash());
- ASSERT_EQ(0x0000081du, ImmutableString("texelFetch(00W20D00D").mangledNameHash());
+ ASSERT_EQ(0x000005e4u, ImmutableString("texelFetch(00Q20D00D").mangledNameHash());
+ ASSERT_EQ(0x0000081eu, ImmutableString("texelFetch(00W20D00D").mangledNameHash());
ASSERT_EQ(0x00000331u, ImmutableString("texelFetch(00c20D00D").mangledNameHash());
ASSERT_EQ(0x00000077u, ImmutableString("texture(00I10B00B").mangledNameHash());
ASSERT_EQ(0x00000441u, ImmutableString("texture(00R10B00B").mangledNameHash());
ASSERT_EQ(0x0000028bu, ImmutableString("texture(00X10B00B").mangledNameHash());
ASSERT_EQ(0x0000031cu, ImmutableString("texture(00J20B00B").mangledNameHash());
- ASSERT_EQ(0x00000685u, ImmutableString("texture(00S20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000686u, ImmutableString("texture(00S20B00B").mangledNameHash());
ASSERT_EQ(0x000000f5u, ImmutableString("texture(00Y20B00B").mangledNameHash());
- ASSERT_EQ(0x00000743u, ImmutableString("texture(00K20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000744u, ImmutableString("texture(00K20B00B").mangledNameHash());
ASSERT_EQ(0x000004b2u, ImmutableString("texture(00T20B00B").mangledNameHash());
ASSERT_EQ(0x000001ebu, ImmutableString("texture(00Z20B00B").mangledNameHash());
ASSERT_EQ(0x0000012au, ImmutableString("texture(00L20B00B").mangledNameHash());
ASSERT_EQ(0x00000300u, ImmutableString("texture(00U20B00B").mangledNameHash());
- ASSERT_EQ(0x00000655u, ImmutableString("texture(00a20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000656u, ImmutableString("texture(00a20B00B").mangledNameHash());
ASSERT_EQ(0x000003b0u, ImmutableString("textureProj(00I20B00B").mangledNameHash());
- ASSERT_EQ(0x000005bdu, ImmutableString("textureProj(00R20B00B").mangledNameHash());
+ ASSERT_EQ(0x000005beu, ImmutableString("textureProj(00R20B00B").mangledNameHash());
ASSERT_EQ(0x0000039eu, ImmutableString("textureProj(00X20B00B").mangledNameHash());
ASSERT_EQ(0x0000037bu, ImmutableString("textureProj(00I30B00B").mangledNameHash());
ASSERT_EQ(0x00000000u, ImmutableString("textureProj(00R30B00B").mangledNameHash());
- ASSERT_EQ(0x00000780u, ImmutableString("textureProj(00X30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000781u, ImmutableString("textureProj(00X30B00B").mangledNameHash());
ASSERT_EQ(0x0000045cu, ImmutableString("textureProj(00J30B00B").mangledNameHash());
ASSERT_EQ(0x00000189u, ImmutableString("textureProj(00S30B00B").mangledNameHash());
ASSERT_EQ(0x00000551u, ImmutableString("textureProj(00Y30B00B").mangledNameHash());
- ASSERT_EQ(0x0000058du, ImmutableString("texture(00d20B00B").mangledNameHash());
+ ASSERT_EQ(0x0000058eu, ImmutableString("texture(00d20B00B").mangledNameHash());
ASSERT_EQ(0x0000048fu, ImmutableString("texture(00e30B00B").mangledNameHash());
- ASSERT_EQ(0x00000652u, ImmutableString("textureProj(00d30B00B").mangledNameHash());
- ASSERT_EQ(0x0000071bu, ImmutableString("texture(00g00B00B").mangledNameHash());
- ASSERT_EQ(0x0000084du, ImmutableString("texture(00o00B00B").mangledNameHash());
+ ASSERT_EQ(0x00000653u, ImmutableString("textureProj(00d30B00B").mangledNameHash());
+ ASSERT_EQ(0x0000071cu, ImmutableString("texture(00g00B00B").mangledNameHash());
+ ASSERT_EQ(0x0000084eu, ImmutableString("texture(00o00B00B").mangledNameHash());
ASSERT_EQ(0x00000110u, ImmutableString("texture(00t00B00B").mangledNameHash());
ASSERT_EQ(0x000001a0u, ImmutableString("texture(00m20B00B").mangledNameHash());
ASSERT_EQ(0x0000019eu, ImmutableString("texture(00h20B00B").mangledNameHash());
ASSERT_EQ(0x00000065u, ImmutableString("texture(00p20B00B").mangledNameHash());
- ASSERT_EQ(0x00000645u, ImmutableString("texture(00u20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000646u, ImmutableString("texture(00u20B00B").mangledNameHash());
ASSERT_EQ(0x00000275u, ImmutableString("texture(00i20B00B").mangledNameHash());
- ASSERT_EQ(0x00000834u, ImmutableString("texture(00f30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000835u, ImmutableString("texture(00f30B00B").mangledNameHash());
ASSERT_EQ(0x0000005bu, ImmutableString("textureProj(00g10B00B").mangledNameHash());
- ASSERT_EQ(0x0000062eu, ImmutableString("textureProj(00o10B00B").mangledNameHash());
+ ASSERT_EQ(0x0000062fu, ImmutableString("textureProj(00o10B00B").mangledNameHash());
ASSERT_EQ(0x000001e4u, ImmutableString("textureProj(00t10B00B").mangledNameHash());
ASSERT_EQ(0x00000571u, ImmutableString("textureProj(00g30B00B").mangledNameHash());
ASSERT_EQ(0x000001a2u, ImmutableString("textureProj(00o30B00B").mangledNameHash());
ASSERT_EQ(0x000004e8u, ImmutableString("textureProj(00t30B00B").mangledNameHash());
- ASSERT_EQ(0x000007c9u, ImmutableString("textureProj(00m30B00B").mangledNameHash());
- ASSERT_EQ(0x00000846u, ImmutableString("texture(00M10B00B").mangledNameHash());
- ASSERT_EQ(0x00000658u, ImmutableString("textureProj(00M20B00B").mangledNameHash());
+ ASSERT_EQ(0x000007cau, ImmutableString("textureProj(00m30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000847u, ImmutableString("texture(00M10B00B").mangledNameHash());
+ ASSERT_EQ(0x00000659u, ImmutableString("textureProj(00M20B00B").mangledNameHash());
ASSERT_EQ(0x00000452u, ImmutableString("textureProj(00M30B00B").mangledNameHash());
- ASSERT_EQ(0x00000668u, ImmutableString("texture(00N10B00B").mangledNameHash());
- ASSERT_EQ(0x000007fbu, ImmutableString("textureProj(00N20B00B").mangledNameHash());
+ ASSERT_EQ(0x00000669u, ImmutableString("texture(00N10B00B").mangledNameHash());
+ ASSERT_EQ(0x000007fcu, ImmutableString("textureProj(00N20B00B").mangledNameHash());
ASSERT_EQ(0x00000074u, ImmutableString("textureProj(00N30B00B").mangledNameHash());
ASSERT_EQ(0x000003c4u, ImmutableString("textureQueryLod(00g00B").mangledNameHash());
ASSERT_EQ(0x00000498u, ImmutableString("textureQueryLod(00o00B").mangledNameHash());
- ASSERT_EQ(0x0000083cu, ImmutableString("textureQueryLod(00t00B").mangledNameHash());
+ ASSERT_EQ(0x0000083du, ImmutableString("textureQueryLod(00t00B").mangledNameHash());
ASSERT_EQ(0x00000403u, ImmutableString("textureQueryLod(00I10B").mangledNameHash());
ASSERT_EQ(0x00000355u, ImmutableString("textureQueryLod(00R10B").mangledNameHash());
- ASSERT_EQ(0x0000075du, ImmutableString("textureQueryLod(00X10B").mangledNameHash());
- ASSERT_EQ(0x000005ebu, ImmutableString("textureQueryLod(00J20B").mangledNameHash());
- ASSERT_EQ(0x00000777u, ImmutableString("textureQueryLod(00S20B").mangledNameHash());
- ASSERT_EQ(0x000006bfu, ImmutableString("textureQueryLod(00Y20B").mangledNameHash());
+ ASSERT_EQ(0x0000075eu, ImmutableString("textureQueryLod(00X10B").mangledNameHash());
+ ASSERT_EQ(0x000005ecu, ImmutableString("textureQueryLod(00J20B").mangledNameHash());
+ ASSERT_EQ(0x00000778u, ImmutableString("textureQueryLod(00S20B").mangledNameHash());
+ ASSERT_EQ(0x000006c0u, ImmutableString("textureQueryLod(00Y20B").mangledNameHash());
ASSERT_EQ(0x00000475u, ImmutableString("textureQueryLod(00K20B").mangledNameHash());
ASSERT_EQ(0x0000014du, ImmutableString("textureQueryLod(00T20B").mangledNameHash());
- ASSERT_EQ(0x00000738u, ImmutableString("textureQueryLod(00Z20B").mangledNameHash());
- ASSERT_EQ(0x000005dbu, ImmutableString("textureQueryLod(00h00B").mangledNameHash());
+ ASSERT_EQ(0x00000739u, ImmutableString("textureQueryLod(00Z20B").mangledNameHash());
+ ASSERT_EQ(0x000005dcu, ImmutableString("textureQueryLod(00h00B").mangledNameHash());
ASSERT_EQ(0x0000009au, ImmutableString("textureQueryLod(00p00B").mangledNameHash());
- ASSERT_EQ(0x00000688u, ImmutableString("textureQueryLod(00u00B").mangledNameHash());
- ASSERT_EQ(0x000006d5u, ImmutableString("textureQueryLod(00L10B").mangledNameHash());
- ASSERT_EQ(0x00000691u, ImmutableString("textureQueryLod(00U10B").mangledNameHash());
+ ASSERT_EQ(0x00000689u, ImmutableString("textureQueryLod(00u00B").mangledNameHash());
+ ASSERT_EQ(0x000006d6u, ImmutableString("textureQueryLod(00L10B").mangledNameHash());
+ ASSERT_EQ(0x00000692u, ImmutableString("textureQueryLod(00U10B").mangledNameHash());
ASSERT_EQ(0x000000cdu, ImmutableString("textureQueryLod(00a10B").mangledNameHash());
ASSERT_EQ(0x000001bfu, ImmutableString("textureQueryLod(00k20B").mangledNameHash());
ASSERT_EQ(0x00000561u, ImmutableString("textureQueryLod(00s20B").mangledNameHash());
ASSERT_EQ(0x00000567u, ImmutableString("textureQueryLod(00x20B").mangledNameHash());
ASSERT_EQ(0x0000000bu, ImmutableString("textureQueryLod(00m00B").mangledNameHash());
- ASSERT_EQ(0x000005f8u, ImmutableString("textureQueryLod(00d10B").mangledNameHash());
+ ASSERT_EQ(0x000005f9u, ImmutableString("textureQueryLod(00d10B").mangledNameHash());
ASSERT_EQ(0x000002bbu, ImmutableString("textureQueryLod(00e20B").mangledNameHash());
ASSERT_EQ(0x000000e7u, ImmutableString("textureQueryLod(00i00B").mangledNameHash());
ASSERT_EQ(0x00000257u, ImmutableString("textureQueryLod(00f10B").mangledNameHash());
@@ -1035,121 +1035,121 @@
ASSERT_EQ(0x00000172u, ImmutableString("textureOffset(00X10B10D").mangledNameHash());
ASSERT_EQ(0x00000219u, ImmutableString("textureOffset(00J20B20D").mangledNameHash());
ASSERT_EQ(0x0000020fu, ImmutableString("textureOffset(00S20B20D").mangledNameHash());
- ASSERT_EQ(0x000005ccu, ImmutableString("textureOffset(00Y20B20D").mangledNameHash());
- ASSERT_EQ(0x0000066fu, ImmutableString("textureOffset(00d20B10D").mangledNameHash());
+ ASSERT_EQ(0x000005cdu, ImmutableString("textureOffset(00Y20B20D").mangledNameHash());
+ ASSERT_EQ(0x00000670u, ImmutableString("textureOffset(00d20B10D").mangledNameHash());
ASSERT_EQ(0x00000082u, ImmutableString("textureOffset(00L20B10D").mangledNameHash());
ASSERT_EQ(0x00000479u, ImmutableString("textureOffset(00U20B10D").mangledNameHash());
- ASSERT_EQ(0x00000759u, ImmutableString("textureOffset(00a20B10D").mangledNameHash());
- ASSERT_EQ(0x000007d7u, ImmutableString("textureOffset(00g00B00D").mangledNameHash());
- ASSERT_EQ(0x000005dfu, ImmutableString("textureOffset(00o00B00D").mangledNameHash());
+ ASSERT_EQ(0x0000075au, ImmutableString("textureOffset(00a20B10D").mangledNameHash());
+ ASSERT_EQ(0x000007d8u, ImmutableString("textureOffset(00g00B00D").mangledNameHash());
+ ASSERT_EQ(0x000005e0u, ImmutableString("textureOffset(00o00B00D").mangledNameHash());
ASSERT_EQ(0x0000043fu, ImmutableString("textureOffset(00t00B00D").mangledNameHash());
ASSERT_EQ(0x000003f8u, ImmutableString("textureOffset(00O10B10D").mangledNameHash());
- ASSERT_EQ(0x00000718u, ImmutableString("textureOffset(00q10B10D").mangledNameHash());
+ ASSERT_EQ(0x00000719u, ImmutableString("textureOffset(00q10B10D").mangledNameHash());
ASSERT_EQ(0x000002b7u, ImmutableString("textureOffset(00v10B10D").mangledNameHash());
ASSERT_EQ(0x000001d2u, ImmutableString("textureOffset(00n20B10D").mangledNameHash());
ASSERT_EQ(0x0000006cu, ImmutableString("textureOffset(00m20B00D").mangledNameHash());
ASSERT_EQ(0x00000205u, ImmutableString("textureOffset(00h10B00D").mangledNameHash());
ASSERT_EQ(0x000000bfu, ImmutableString("textureOffset(00p10B00D").mangledNameHash());
- ASSERT_EQ(0x00000802u, ImmutableString("textureOffset(00u10B00D").mangledNameHash());
+ ASSERT_EQ(0x00000803u, ImmutableString("textureOffset(00u10B00D").mangledNameHash());
ASSERT_EQ(0x00000368u, ImmutableString("textureOffset(00i20B00D").mangledNameHash());
- ASSERT_EQ(0x0000076cu, ImmutableString("textureOffset(00f30B10D").mangledNameHash());
+ ASSERT_EQ(0x0000076du, ImmutableString("textureOffset(00f30B10D").mangledNameHash());
ASSERT_EQ(0x000004beu, ImmutableString("textureProjOffset(00I20B10D").mangledNameHash());
ASSERT_EQ(0x00000296u, ImmutableString("textureProjOffset(00R20B10D").mangledNameHash());
- ASSERT_EQ(0x00000841u, ImmutableString("textureProjOffset(00X20B10D").mangledNameHash());
+ ASSERT_EQ(0x00000842u, ImmutableString("textureProjOffset(00X20B10D").mangledNameHash());
ASSERT_EQ(0x0000016eu, ImmutableString("textureProjOffset(00I30B10D").mangledNameHash());
- ASSERT_EQ(0x0000083du, ImmutableString("textureProjOffset(00R30B10D").mangledNameHash());
- ASSERT_EQ(0x000005ecu, ImmutableString("textureProjOffset(00X30B10D").mangledNameHash());
- ASSERT_EQ(0x00000638u, ImmutableString("textureProjOffset(00J30B20D").mangledNameHash());
+ ASSERT_EQ(0x0000083eu, ImmutableString("textureProjOffset(00R30B10D").mangledNameHash());
+ ASSERT_EQ(0x000005edu, ImmutableString("textureProjOffset(00X30B10D").mangledNameHash());
+ ASSERT_EQ(0x00000639u, ImmutableString("textureProjOffset(00J30B20D").mangledNameHash());
ASSERT_EQ(0x00000087u, ImmutableString("textureProjOffset(00S30B20D").mangledNameHash());
ASSERT_EQ(0x000001d1u, ImmutableString("textureProjOffset(00Y30B20D").mangledNameHash());
ASSERT_EQ(0x00000412u, ImmutableString("textureProjOffset(00d30B10D").mangledNameHash());
ASSERT_EQ(0x00000002u, ImmutableString("textureProjOffset(00g10B00D").mangledNameHash());
- ASSERT_EQ(0x0000057eu, ImmutableString("textureProjOffset(00o10B00D").mangledNameHash());
- ASSERT_EQ(0x00000734u, ImmutableString("textureProjOffset(00t10B00D").mangledNameHash());
- ASSERT_EQ(0x00000810u, ImmutableString("textureProjOffset(00g30B00D").mangledNameHash());
+ ASSERT_EQ(0x0000057fu, ImmutableString("textureProjOffset(00o10B00D").mangledNameHash());
+ ASSERT_EQ(0x00000735u, ImmutableString("textureProjOffset(00t10B00D").mangledNameHash());
+ ASSERT_EQ(0x00000811u, ImmutableString("textureProjOffset(00g30B00D").mangledNameHash());
ASSERT_EQ(0x00000450u, ImmutableString("textureProjOffset(00o30B00D").mangledNameHash());
- ASSERT_EQ(0x0000071du, ImmutableString("textureProjOffset(00t30B00D").mangledNameHash());
- ASSERT_EQ(0x000006e3u, ImmutableString("textureProjOffset(00O20B10D").mangledNameHash());
+ ASSERT_EQ(0x0000071eu, ImmutableString("textureProjOffset(00t30B00D").mangledNameHash());
+ ASSERT_EQ(0x000006e4u, ImmutableString("textureProjOffset(00O20B10D").mangledNameHash());
ASSERT_EQ(0x00000305u, ImmutableString("textureProjOffset(00q20B10D").mangledNameHash());
ASSERT_EQ(0x0000022au, ImmutableString("textureProjOffset(00v20B10D").mangledNameHash());
ASSERT_EQ(0x00000135u, ImmutableString("textureProjOffset(00O30B10D").mangledNameHash());
ASSERT_EQ(0x00000081u, ImmutableString("textureProjOffset(00q30B10D").mangledNameHash());
- ASSERT_EQ(0x000007c0u, ImmutableString("textureProjOffset(00v30B10D").mangledNameHash());
+ ASSERT_EQ(0x000007c1u, ImmutableString("textureProjOffset(00v30B10D").mangledNameHash());
ASSERT_EQ(0x000002d0u, ImmutableString("textureProjOffset(00n30B10D").mangledNameHash());
- ASSERT_EQ(0x00000631u, ImmutableString("textureProjOffset(00m30B00D").mangledNameHash());
+ ASSERT_EQ(0x00000632u, ImmutableString("textureProjOffset(00m30B00D").mangledNameHash());
ASSERT_EQ(0x00000476u, ImmutableString("textureLodOffset(00I10B00B10D").mangledNameHash());
- ASSERT_EQ(0x00000646u, ImmutableString("textureLodOffset(00R10B00B10D").mangledNameHash());
+ ASSERT_EQ(0x00000647u, ImmutableString("textureLodOffset(00R10B00B10D").mangledNameHash());
ASSERT_EQ(0x000004b1u, ImmutableString("textureLodOffset(00X10B00B10D").mangledNameHash());
ASSERT_EQ(0x00000363u, ImmutableString("textureLodOffset(00J20B00B20D").mangledNameHash());
ASSERT_EQ(0x00000099u, ImmutableString("textureLodOffset(00S20B00B20D").mangledNameHash());
- ASSERT_EQ(0x00000724u, ImmutableString("textureLodOffset(00Y20B00B20D").mangledNameHash());
+ ASSERT_EQ(0x00000725u, ImmutableString("textureLodOffset(00Y20B00B20D").mangledNameHash());
ASSERT_EQ(0x00000557u, ImmutableString("textureLodOffset(00d20B00B10D").mangledNameHash());
- ASSERT_EQ(0x00000825u, ImmutableString("textureLodOffset(00L20B00B10D").mangledNameHash());
+ ASSERT_EQ(0x00000826u, ImmutableString("textureLodOffset(00L20B00B10D").mangledNameHash());
ASSERT_EQ(0x0000041cu, ImmutableString("textureLodOffset(00U20B00B10D").mangledNameHash());
ASSERT_EQ(0x0000002au, ImmutableString("textureLodOffset(00a20B00B10D").mangledNameHash());
ASSERT_EQ(0x00000184u, ImmutableString("textureLodOffset(00g00B00B00D").mangledNameHash());
ASSERT_EQ(0x0000001du, ImmutableString("textureLodOffset(00o00B00B00D").mangledNameHash());
ASSERT_EQ(0x000002e6u, ImmutableString("textureLodOffset(00t00B00B00D").mangledNameHash());
- ASSERT_EQ(0x000007edu, ImmutableString("textureLodOffset(00m20B00B00D").mangledNameHash());
+ ASSERT_EQ(0x000007eeu, ImmutableString("textureLodOffset(00m20B00B00D").mangledNameHash());
ASSERT_EQ(0x00000286u, ImmutableString("textureLodOffset(00h10B00B00D").mangledNameHash());
ASSERT_EQ(0x00000269u, ImmutableString("textureLodOffset(00p10B00B00D").mangledNameHash());
- ASSERT_EQ(0x00000826u, ImmutableString("textureLodOffset(00u10B00B00D").mangledNameHash());
+ ASSERT_EQ(0x00000827u, ImmutableString("textureLodOffset(00u10B00B00D").mangledNameHash());
ASSERT_EQ(0x0000044au, ImmutableString("textureLodOffset(00i20B00B00D").mangledNameHash());
- ASSERT_EQ(0x00000818u, ImmutableString("textureProjLodOffset(00I20B00B10D").mangledNameHash());
+ ASSERT_EQ(0x00000819u, ImmutableString("textureProjLodOffset(00I20B00B10D").mangledNameHash());
ASSERT_EQ(0x000000beu, ImmutableString("textureProjLodOffset(00R20B00B10D").mangledNameHash());
ASSERT_EQ(0x000002fcu, ImmutableString("textureProjLodOffset(00X20B00B10D").mangledNameHash());
- ASSERT_EQ(0x00000615u, ImmutableString("textureProjLodOffset(00I30B00B10D").mangledNameHash());
- ASSERT_EQ(0x000005d7u, ImmutableString("textureProjLodOffset(00R30B00B10D").mangledNameHash());
+ ASSERT_EQ(0x00000616u, ImmutableString("textureProjLodOffset(00I30B00B10D").mangledNameHash());
+ ASSERT_EQ(0x000005d8u, ImmutableString("textureProjLodOffset(00R30B00B10D").mangledNameHash());
ASSERT_EQ(0x00000409u, ImmutableString("textureProjLodOffset(00X30B00B10D").mangledNameHash());
ASSERT_EQ(0x0000032cu, ImmutableString("textureProjLodOffset(00J30B00B20D").mangledNameHash());
ASSERT_EQ(0x000000e4u, ImmutableString("textureProjLodOffset(00S30B00B20D").mangledNameHash());
- ASSERT_EQ(0x0000074bu, ImmutableString("textureProjLodOffset(00Y30B00B20D").mangledNameHash());
- ASSERT_EQ(0x00000612u, ImmutableString("textureProjLodOffset(00d30B00B10D").mangledNameHash());
+ ASSERT_EQ(0x0000074cu, ImmutableString("textureProjLodOffset(00Y30B00B20D").mangledNameHash());
+ ASSERT_EQ(0x00000613u, ImmutableString("textureProjLodOffset(00d30B00B10D").mangledNameHash());
ASSERT_EQ(0x00000565u, ImmutableString("textureProjLodOffset(00g10B00B00D").mangledNameHash());
ASSERT_EQ(0x0000013au, ImmutableString("textureProjLodOffset(00o10B00B00D").mangledNameHash());
- ASSERT_EQ(0x000006e2u, ImmutableString("textureProjLodOffset(00t10B00B00D").mangledNameHash());
+ ASSERT_EQ(0x000006e3u, ImmutableString("textureProjLodOffset(00t10B00B00D").mangledNameHash());
ASSERT_EQ(0x00000155u, ImmutableString("textureProjLodOffset(00g30B00B00D").mangledNameHash());
- ASSERT_EQ(0x000005bcu, ImmutableString("textureProjLodOffset(00o30B00B00D").mangledNameHash());
+ ASSERT_EQ(0x000005bdu, ImmutableString("textureProjLodOffset(00o30B00B00D").mangledNameHash());
ASSERT_EQ(0x00000071u, ImmutableString("textureProjLodOffset(00t30B00B00D").mangledNameHash());
- ASSERT_EQ(0x00000830u, ImmutableString("textureProjLodOffset(00m30B00B00D").mangledNameHash());
- ASSERT_EQ(0x000006d4u, ImmutableString("texelFetchOffset(00I10D00D10D").mangledNameHash());
+ ASSERT_EQ(0x00000831u, ImmutableString("textureProjLodOffset(00m30B00B00D").mangledNameHash());
+ ASSERT_EQ(0x000006d5u, ImmutableString("texelFetchOffset(00I10D00D10D").mangledNameHash());
ASSERT_EQ(0x000004adu, ImmutableString("texelFetchOffset(00R10D00D10D").mangledNameHash());
ASSERT_EQ(0x0000019cu, ImmutableString("texelFetchOffset(00X10D00D10D").mangledNameHash());
ASSERT_EQ(0x00000044u, ImmutableString("texelFetchOffset(00J20D00D20D").mangledNameHash());
ASSERT_EQ(0x000004fcu, ImmutableString("texelFetchOffset(00S20D00D20D").mangledNameHash());
ASSERT_EQ(0x0000024eu, ImmutableString("texelFetchOffset(00Y20D00D20D").mangledNameHash());
- ASSERT_EQ(0x000007b8u, ImmutableString("texelFetchOffset(00L20D00D10D").mangledNameHash());
+ ASSERT_EQ(0x000007b9u, ImmutableString("texelFetchOffset(00L20D00D10D").mangledNameHash());
ASSERT_EQ(0x0000040cu, ImmutableString("texelFetchOffset(00U20D00D10D").mangledNameHash());
ASSERT_EQ(0x000000b5u, ImmutableString("texelFetchOffset(00a20D00D10D").mangledNameHash());
- ASSERT_EQ(0x000007c3u, ImmutableString("texelFetchOffset(00g00D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000007c4u, ImmutableString("texelFetchOffset(00g00D00D00D").mangledNameHash());
ASSERT_EQ(0x0000022cu, ImmutableString("texelFetchOffset(00o00D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000589u, ImmutableString("texelFetchOffset(00t00D00D00D").mangledNameHash());
- ASSERT_EQ(0x000005e6u, ImmutableString("texelFetchOffset(00O10D10D").mangledNameHash());
+ ASSERT_EQ(0x0000058au, ImmutableString("texelFetchOffset(00t00D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000005e7u, ImmutableString("texelFetchOffset(00O10D10D").mangledNameHash());
ASSERT_EQ(0x00000023u, ImmutableString("texelFetchOffset(00q10D10D").mangledNameHash());
- ASSERT_EQ(0x00000854u, ImmutableString("texelFetchOffset(00v10D10D").mangledNameHash());
+ ASSERT_EQ(0x00000855u, ImmutableString("texelFetchOffset(00v10D10D").mangledNameHash());
ASSERT_EQ(0x000001bau, ImmutableString("texelFetchOffset(00h10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000121u, ImmutableString("texelFetchOffset(00p10D00D00D").mangledNameHash());
- ASSERT_EQ(0x0000065du, ImmutableString("texelFetchOffset(00u10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000065eu, ImmutableString("texelFetchOffset(00u10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000362u, ImmutableString("textureGradOffset(00I10B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x000007b2u, ImmutableString("textureGradOffset(00R10B10B10B10D").mangledNameHash());
+ ASSERT_EQ(0x000007b3u, ImmutableString("textureGradOffset(00R10B10B10B10D").mangledNameHash());
ASSERT_EQ(0x0000019bu, ImmutableString("textureGradOffset(00X10B10B10B10D").mangledNameHash());
ASSERT_EQ(0x0000026du, ImmutableString("textureGradOffset(00J20B20B20B20D").mangledNameHash());
- ASSERT_EQ(0x000006c2u, ImmutableString("textureGradOffset(00S20B20B20B20D").mangledNameHash());
- ASSERT_EQ(0x00000592u, ImmutableString("textureGradOffset(00Y20B20B20B20D").mangledNameHash());
+ ASSERT_EQ(0x000006c3u, ImmutableString("textureGradOffset(00S20B20B20B20D").mangledNameHash());
+ ASSERT_EQ(0x00000593u, ImmutableString("textureGradOffset(00Y20B20B20B20D").mangledNameHash());
ASSERT_EQ(0x00000410u, ImmutableString("textureGradOffset(00d20B10B10B10D").mangledNameHash());
ASSERT_EQ(0x000003e9u, ImmutableString("textureGradOffset(00L20B10B10B10D").mangledNameHash());
ASSERT_EQ(0x000003e5u, ImmutableString("textureGradOffset(00U20B10B10B10D").mangledNameHash());
ASSERT_EQ(0x00000307u, ImmutableString("textureGradOffset(00a20B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x00000581u, ImmutableString("textureGradOffset(00f30B10B10B10D").mangledNameHash());
+ ASSERT_EQ(0x00000582u, ImmutableString("textureGradOffset(00f30B10B10B10D").mangledNameHash());
ASSERT_EQ(0x000002a3u, ImmutableString("textureGradOffset(00g00B00B00B00D").mangledNameHash());
- ASSERT_EQ(0x00000761u, ImmutableString("textureGradOffset(00o00B00B00B00D").mangledNameHash());
- ASSERT_EQ(0x00000585u, ImmutableString("textureGradOffset(00t00B00B00B00D").mangledNameHash());
+ ASSERT_EQ(0x00000762u, ImmutableString("textureGradOffset(00o00B00B00B00D").mangledNameHash());
+ ASSERT_EQ(0x00000586u, ImmutableString("textureGradOffset(00t00B00B00B00D").mangledNameHash());
ASSERT_EQ(0x000003e7u, ImmutableString("textureGradOffset(00O10B10B10B10D").mangledNameHash());
ASSERT_EQ(0x0000053fu, ImmutableString("textureGradOffset(00q10B10B10B10D").mangledNameHash());
ASSERT_EQ(0x000002edu, ImmutableString("textureGradOffset(00v10B10B10B10D").mangledNameHash());
ASSERT_EQ(0x000004eeu, ImmutableString("textureGradOffset(00n20B10B10B10D").mangledNameHash());
ASSERT_EQ(0x00000349u, ImmutableString("textureGradOffset(00m20B00B00B00D").mangledNameHash());
- ASSERT_EQ(0x000006ddu, ImmutableString("textureGradOffset(00h10B00B00B00D").mangledNameHash());
+ ASSERT_EQ(0x000006deu, ImmutableString("textureGradOffset(00h10B00B00B00D").mangledNameHash());
ASSERT_EQ(0x00000154u, ImmutableString("textureGradOffset(00p10B00B00B00D").mangledNameHash());
ASSERT_EQ(0x000004cdu, ImmutableString("textureGradOffset(00u10B00B00B00D").mangledNameHash());
ASSERT_EQ(0x00000434u, ImmutableString("textureGradOffset(00i20B00B00B00D").mangledNameHash());
@@ -1159,13 +1159,13 @@
ImmutableString("textureProjGradOffset(00R20B10B10B10D").mangledNameHash());
ASSERT_EQ(0x0000038au,
ImmutableString("textureProjGradOffset(00X20B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x000005a9u,
+ ASSERT_EQ(0x000005aau,
ImmutableString("textureProjGradOffset(00I30B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x000007b7u,
+ ASSERT_EQ(0x000007b8u,
ImmutableString("textureProjGradOffset(00R30B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x000006f1u,
+ ASSERT_EQ(0x000006f2u,
ImmutableString("textureProjGradOffset(00X30B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x00000852u,
+ ASSERT_EQ(0x00000853u,
ImmutableString("textureProjGradOffset(00J30B20B20B20D").mangledNameHash());
ASSERT_EQ(0x000004f3u,
ImmutableString("textureProjGradOffset(00S30B20B20B20D").mangledNameHash());
@@ -1173,17 +1173,17 @@
ImmutableString("textureProjGradOffset(00Y30B20B20B20D").mangledNameHash());
ASSERT_EQ(0x0000016cu,
ImmutableString("textureProjGradOffset(00d30B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x00000831u,
+ ASSERT_EQ(0x00000832u,
ImmutableString("textureProjGradOffset(00g10B00B00B00D").mangledNameHash());
ASSERT_EQ(0x000002c7u,
ImmutableString("textureProjGradOffset(00o10B00B00B00D").mangledNameHash());
- ASSERT_EQ(0x00000773u,
+ ASSERT_EQ(0x00000774u,
ImmutableString("textureProjGradOffset(00t10B00B00B00D").mangledNameHash());
ASSERT_EQ(0x000001a1u,
ImmutableString("textureProjGradOffset(00g30B00B00B00D").mangledNameHash());
ASSERT_EQ(0x00000570u,
ImmutableString("textureProjGradOffset(00o30B00B00B00D").mangledNameHash());
- ASSERT_EQ(0x00000674u,
+ ASSERT_EQ(0x00000675u,
ImmutableString("textureProjGradOffset(00t30B00B00B00D").mangledNameHash());
ASSERT_EQ(0x0000034fu,
ImmutableString("textureProjGradOffset(00O20B10B10B10D").mangledNameHash());
@@ -1197,115 +1197,115 @@
ImmutableString("textureProjGradOffset(00q30B10B10B10D").mangledNameHash());
ASSERT_EQ(0x00000005u,
ImmutableString("textureProjGradOffset(00v30B10B10B10D").mangledNameHash());
- ASSERT_EQ(0x00000744u,
+ ASSERT_EQ(0x00000745u,
ImmutableString("textureProjGradOffset(00n30B10B10B10D").mangledNameHash());
ASSERT_EQ(0x0000056du,
ImmutableString("textureProjGradOffset(00m30B00B00B00D").mangledNameHash());
- ASSERT_EQ(0x000007d0u, ImmutableString("textureOffset(00I10B10D00B").mangledNameHash());
+ ASSERT_EQ(0x000007d1u, ImmutableString("textureOffset(00I10B10D00B").mangledNameHash());
ASSERT_EQ(0x00000147u, ImmutableString("textureOffset(00R10B10D00B").mangledNameHash());
ASSERT_EQ(0x000000f8u, ImmutableString("textureOffset(00X10B10D00B").mangledNameHash());
- ASSERT_EQ(0x000007d4u, ImmutableString("textureOffset(00J20B20D00B").mangledNameHash());
- ASSERT_EQ(0x000005acu, ImmutableString("textureOffset(00S20B20D00B").mangledNameHash());
- ASSERT_EQ(0x000006c1u, ImmutableString("textureOffset(00Y20B20D00B").mangledNameHash());
+ ASSERT_EQ(0x000007d5u, ImmutableString("textureOffset(00J20B20D00B").mangledNameHash());
+ ASSERT_EQ(0x000005adu, ImmutableString("textureOffset(00S20B20D00B").mangledNameHash());
+ ASSERT_EQ(0x000006c2u, ImmutableString("textureOffset(00Y20B20D00B").mangledNameHash());
ASSERT_EQ(0x0000006bu, ImmutableString("textureOffset(00d20B10D00B").mangledNameHash());
- ASSERT_EQ(0x000006cau, ImmutableString("textureOffset(00L20B10D00B").mangledNameHash());
- ASSERT_EQ(0x00000747u, ImmutableString("textureOffset(00U20B10D00B").mangledNameHash());
+ ASSERT_EQ(0x000006cbu, ImmutableString("textureOffset(00L20B10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000748u, ImmutableString("textureOffset(00U20B10D00B").mangledNameHash());
ASSERT_EQ(0x00000145u, ImmutableString("textureOffset(00a20B10D00B").mangledNameHash());
ASSERT_EQ(0x0000037du, ImmutableString("textureOffset(00g00B00D00B").mangledNameHash());
ASSERT_EQ(0x000002cdu, ImmutableString("textureOffset(00o00B00D00B").mangledNameHash());
- ASSERT_EQ(0x000005b1u, ImmutableString("textureOffset(00t00B00D00B").mangledNameHash());
- ASSERT_EQ(0x0000076au, ImmutableString("textureOffset(00m20B00D00B").mangledNameHash());
+ ASSERT_EQ(0x000005b2u, ImmutableString("textureOffset(00t00B00D00B").mangledNameHash());
+ ASSERT_EQ(0x0000076bu, ImmutableString("textureOffset(00m20B00D00B").mangledNameHash());
ASSERT_EQ(0x000002dcu, ImmutableString("textureOffset(00h10B00D00B").mangledNameHash());
- ASSERT_EQ(0x00000730u, ImmutableString("textureOffset(00p10B00D00B").mangledNameHash());
+ ASSERT_EQ(0x00000731u, ImmutableString("textureOffset(00p10B00D00B").mangledNameHash());
ASSERT_EQ(0x00000161u, ImmutableString("textureOffset(00u10B00D00B").mangledNameHash());
- ASSERT_EQ(0x000005b2u, ImmutableString("textureOffset(00i20B00D00B").mangledNameHash());
- ASSERT_EQ(0x0000060du, ImmutableString("textureProjOffset(00I20B10D00B").mangledNameHash());
- ASSERT_EQ(0x000005aeu, ImmutableString("textureProjOffset(00R20B10D00B").mangledNameHash());
- ASSERT_EQ(0x000006f0u, ImmutableString("textureProjOffset(00X20B10D00B").mangledNameHash());
- ASSERT_EQ(0x00000821u, ImmutableString("textureProjOffset(00I30B10D00B").mangledNameHash());
+ ASSERT_EQ(0x000005b3u, ImmutableString("textureOffset(00i20B00D00B").mangledNameHash());
+ ASSERT_EQ(0x0000060eu, ImmutableString("textureProjOffset(00I20B10D00B").mangledNameHash());
+ ASSERT_EQ(0x000005afu, ImmutableString("textureProjOffset(00R20B10D00B").mangledNameHash());
+ ASSERT_EQ(0x000006f1u, ImmutableString("textureProjOffset(00X20B10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000822u, ImmutableString("textureProjOffset(00I30B10D00B").mangledNameHash());
ASSERT_EQ(0x0000042du, ImmutableString("textureProjOffset(00R30B10D00B").mangledNameHash());
- ASSERT_EQ(0x0000065au, ImmutableString("textureProjOffset(00X30B10D00B").mangledNameHash());
+ ASSERT_EQ(0x0000065bu, ImmutableString("textureProjOffset(00X30B10D00B").mangledNameHash());
ASSERT_EQ(0x00000158u, ImmutableString("textureProjOffset(00J30B20D00B").mangledNameHash());
- ASSERT_EQ(0x00000706u, ImmutableString("textureProjOffset(00S30B20D00B").mangledNameHash());
+ ASSERT_EQ(0x00000707u, ImmutableString("textureProjOffset(00S30B20D00B").mangledNameHash());
ASSERT_EQ(0x00000055u, ImmutableString("textureProjOffset(00Y30B20D00B").mangledNameHash());
ASSERT_EQ(0x000001f9u, ImmutableString("textureProjOffset(00d30B10D00B").mangledNameHash());
- ASSERT_EQ(0x000005c3u, ImmutableString("textureProjOffset(00g10B00D00B").mangledNameHash());
+ ASSERT_EQ(0x000005c4u, ImmutableString("textureProjOffset(00g10B00D00B").mangledNameHash());
ASSERT_EQ(0x00000542u, ImmutableString("textureProjOffset(00o10B00D00B").mangledNameHash());
ASSERT_EQ(0x000001b2u, ImmutableString("textureProjOffset(00t10B00D00B").mangledNameHash());
ASSERT_EQ(0x0000040bu, ImmutableString("textureProjOffset(00g30B00D00B").mangledNameHash());
- ASSERT_EQ(0x00000620u, ImmutableString("textureProjOffset(00o30B00D00B").mangledNameHash());
+ ASSERT_EQ(0x00000621u, ImmutableString("textureProjOffset(00o30B00D00B").mangledNameHash());
ASSERT_EQ(0x00000035u, ImmutableString("textureProjOffset(00t30B00D00B").mangledNameHash());
ASSERT_EQ(0x00000339u, ImmutableString("textureProjOffset(00m30B00D00B").mangledNameHash());
ASSERT_EQ(0x00000284u, ImmutableString("texture(00M10B").mangledNameHash());
ASSERT_EQ(0x000002d3u, ImmutableString("textureProj(00M20B").mangledNameHash());
ASSERT_EQ(0x000003e8u, ImmutableString("textureProj(00M30B").mangledNameHash());
ASSERT_EQ(0x000003e1u, ImmutableString("textureSize(00M00D").mangledNameHash());
- ASSERT_EQ(0x000006beu, ImmutableString("texelFetch(00M10D00D").mangledNameHash());
+ ASSERT_EQ(0x000006bfu, ImmutableString("texelFetch(00M10D00D").mangledNameHash());
ASSERT_EQ(0x000000b1u, ImmutableString("texture(00N10B").mangledNameHash());
ASSERT_EQ(0x00000402u, ImmutableString("textureProj(00N20B").mangledNameHash());
ASSERT_EQ(0x0000036bu, ImmutableString("textureProj(00N30B").mangledNameHash());
- ASSERT_EQ(0x000006aeu, ImmutableString("rgb_2_yuv(20B00H").mangledNameHash());
+ ASSERT_EQ(0x000006afu, ImmutableString("rgb_2_yuv(20B00H").mangledNameHash());
ASSERT_EQ(0x0000045au, ImmutableString("yuv_2_rgb(20B00H").mangledNameHash());
- ASSERT_EQ(0x00000579u, ImmutableString("textureSize(00N00D").mangledNameHash());
+ ASSERT_EQ(0x0000057au, ImmutableString("textureSize(00N00D").mangledNameHash());
ASSERT_EQ(0x000001ceu, ImmutableString("texelFetch(00N10D00D").mangledNameHash());
- ASSERT_EQ(0x000007adu, ImmutableString("textureGather(00I10B").mangledNameHash());
+ ASSERT_EQ(0x000007aeu, ImmutableString("textureGather(00I10B").mangledNameHash());
ASSERT_EQ(0x0000045du, ImmutableString("textureGather(00R10B").mangledNameHash());
ASSERT_EQ(0x00000146u, ImmutableString("textureGather(00X10B").mangledNameHash());
ASSERT_EQ(0x00000501u, ImmutableString("textureGather(00I10B00D").mangledNameHash());
- ASSERT_EQ(0x000007e6u, ImmutableString("textureGather(00R10B00D").mangledNameHash());
- ASSERT_EQ(0x00000754u, ImmutableString("textureGather(00X10B00D").mangledNameHash());
+ ASSERT_EQ(0x000007e7u, ImmutableString("textureGather(00R10B00D").mangledNameHash());
+ ASSERT_EQ(0x00000755u, ImmutableString("textureGather(00X10B00D").mangledNameHash());
ASSERT_EQ(0x000000e5u, ImmutableString("textureGather(00L20B").mangledNameHash());
- ASSERT_EQ(0x000005e1u, ImmutableString("textureGather(00U20B").mangledNameHash());
+ ASSERT_EQ(0x000005e2u, ImmutableString("textureGather(00U20B").mangledNameHash());
ASSERT_EQ(0x0000034eu, ImmutableString("textureGather(00a20B").mangledNameHash());
ASSERT_EQ(0x000000a9u, ImmutableString("textureGather(00L20B00D").mangledNameHash());
ASSERT_EQ(0x0000042eu, ImmutableString("textureGather(00U20B00D").mangledNameHash());
- ASSERT_EQ(0x00000662u, ImmutableString("textureGather(00a20B00D").mangledNameHash());
- ASSERT_EQ(0x00000819u, ImmutableString("textureGather(00K20B").mangledNameHash());
- ASSERT_EQ(0x00000851u, ImmutableString("textureGather(00T20B").mangledNameHash());
- ASSERT_EQ(0x000007beu, ImmutableString("textureGather(00Z20B").mangledNameHash());
+ ASSERT_EQ(0x00000663u, ImmutableString("textureGather(00a20B00D").mangledNameHash());
+ ASSERT_EQ(0x0000081au, ImmutableString("textureGather(00K20B").mangledNameHash());
+ ASSERT_EQ(0x00000852u, ImmutableString("textureGather(00T20B").mangledNameHash());
+ ASSERT_EQ(0x000007bfu, ImmutableString("textureGather(00Z20B").mangledNameHash());
ASSERT_EQ(0x000003ffu, ImmutableString("textureGather(00K20B00D").mangledNameHash());
ASSERT_EQ(0x00000401u, ImmutableString("textureGather(00T20B00D").mangledNameHash());
ASSERT_EQ(0x000003d7u, ImmutableString("textureGather(00Z20B00D").mangledNameHash());
- ASSERT_EQ(0x0000061du, ImmutableString("textureGather(00k30B").mangledNameHash());
+ ASSERT_EQ(0x0000061eu, ImmutableString("textureGather(00k30B").mangledNameHash());
ASSERT_EQ(0x0000052eu, ImmutableString("textureGather(00s30B").mangledNameHash());
ASSERT_EQ(0x000003d4u, ImmutableString("textureGather(00x30B").mangledNameHash());
- ASSERT_EQ(0x00000701u, ImmutableString("textureGather(00k30B00D").mangledNameHash());
+ ASSERT_EQ(0x00000702u, ImmutableString("textureGather(00k30B00D").mangledNameHash());
ASSERT_EQ(0x00000266u, ImmutableString("textureGather(00s30B00D").mangledNameHash());
ASSERT_EQ(0x0000013bu, ImmutableString("textureGather(00x30B00D").mangledNameHash());
ASSERT_EQ(0x00000054u, ImmutableString("textureGather(00O20B").mangledNameHash());
ASSERT_EQ(0x000002a4u, ImmutableString("textureGather(00q20B").mangledNameHash());
ASSERT_EQ(0x00000471u, ImmutableString("textureGather(00v20B").mangledNameHash());
- ASSERT_EQ(0x0000072bu, ImmutableString("textureGather(00O20B00D").mangledNameHash());
- ASSERT_EQ(0x0000063eu, ImmutableString("textureGather(00q20B00D").mangledNameHash());
+ ASSERT_EQ(0x0000072cu, ImmutableString("textureGather(00O20B00D").mangledNameHash());
+ ASSERT_EQ(0x0000063fu, ImmutableString("textureGather(00q20B00D").mangledNameHash());
ASSERT_EQ(0x000000ddu, ImmutableString("textureGather(00v20B00D").mangledNameHash());
- ASSERT_EQ(0x0000072eu, ImmutableString("textureGather(00d10B").mangledNameHash());
- ASSERT_EQ(0x000007f0u, ImmutableString("textureGather(00d10B00B").mangledNameHash());
- ASSERT_EQ(0x0000064du, ImmutableString("textureGather(00f20B").mangledNameHash());
+ ASSERT_EQ(0x0000072fu, ImmutableString("textureGather(00d10B").mangledNameHash());
+ ASSERT_EQ(0x000007f1u, ImmutableString("textureGather(00d10B00B").mangledNameHash());
+ ASSERT_EQ(0x0000064eu, ImmutableString("textureGather(00f20B").mangledNameHash());
ASSERT_EQ(0x00000101u, ImmutableString("textureGather(00f20B00B").mangledNameHash());
ASSERT_EQ(0x000003fau, ImmutableString("textureGather(00e20B").mangledNameHash());
ASSERT_EQ(0x000000ceu, ImmutableString("textureGather(00e20B00B").mangledNameHash());
- ASSERT_EQ(0x0000070du, ImmutableString("textureGather(00l30B00B").mangledNameHash());
- ASSERT_EQ(0x00000753u, ImmutableString("textureGather(00n10B00B").mangledNameHash());
+ ASSERT_EQ(0x0000070eu, ImmutableString("textureGather(00l30B00B").mangledNameHash());
+ ASSERT_EQ(0x00000754u, ImmutableString("textureGather(00n10B00B").mangledNameHash());
ASSERT_EQ(0x00000080u, ImmutableString("textureGatherOffset(00I10B10D").mangledNameHash());
- ASSERT_EQ(0x0000081au, ImmutableString("textureGatherOffset(00R10B10D").mangledNameHash());
+ ASSERT_EQ(0x0000081bu, ImmutableString("textureGatherOffset(00R10B10D").mangledNameHash());
ASSERT_EQ(0x000003cau, ImmutableString("textureGatherOffset(00X10B10D").mangledNameHash());
ASSERT_EQ(0x00000555u, ImmutableString("textureGatherOffset(00I10B10D00D").mangledNameHash());
ASSERT_EQ(0x0000011cu, ImmutableString("textureGatherOffset(00R10B10D00D").mangledNameHash());
- ASSERT_EQ(0x0000082bu, ImmutableString("textureGatherOffset(00X10B10D00D").mangledNameHash());
- ASSERT_EQ(0x00000703u, ImmutableString("textureGatherOffset(00L20B10D").mangledNameHash());
+ ASSERT_EQ(0x0000082cu, ImmutableString("textureGatherOffset(00X10B10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000704u, ImmutableString("textureGatherOffset(00L20B10D").mangledNameHash());
ASSERT_EQ(0x000003a2u, ImmutableString("textureGatherOffset(00U20B10D").mangledNameHash());
- ASSERT_EQ(0x00000593u, ImmutableString("textureGatherOffset(00a20B10D").mangledNameHash());
+ ASSERT_EQ(0x00000594u, ImmutableString("textureGatherOffset(00a20B10D").mangledNameHash());
ASSERT_EQ(0x00000247u, ImmutableString("textureGatherOffset(00L20B10D00D").mangledNameHash());
ASSERT_EQ(0x000004ffu, ImmutableString("textureGatherOffset(00U20B10D00D").mangledNameHash());
ASSERT_EQ(0x0000007fu, ImmutableString("textureGatherOffset(00a20B10D00D").mangledNameHash());
ASSERT_EQ(0x00000148u, ImmutableString("textureGatherOffset(00d10B00B10D").mangledNameHash());
ASSERT_EQ(0x0000030fu, ImmutableString("textureGatherOffset(00f20B00B10D").mangledNameHash());
ASSERT_EQ(0x00000230u, ImmutableString("textureGatherOffset(00O10B10D").mangledNameHash());
- ASSERT_EQ(0x00000661u, ImmutableString("textureGatherOffset(00q10B10D").mangledNameHash());
+ ASSERT_EQ(0x00000662u, ImmutableString("textureGatherOffset(00q10B10D").mangledNameHash());
ASSERT_EQ(0x000004f7u, ImmutableString("textureGatherOffset(00v10B10D").mangledNameHash());
ASSERT_EQ(0x00000474u, ImmutableString("textureGatherOffset(00O10B10D00D").mangledNameHash());
ASSERT_EQ(0x00000500u, ImmutableString("textureGatherOffset(00q10B10D00D").mangledNameHash());
- ASSERT_EQ(0x00000838u, ImmutableString("textureGatherOffset(00v10B10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000839u, ImmutableString("textureGatherOffset(00v10B10D00D").mangledNameHash());
ASSERT_EQ(0x000000cbu, ImmutableString("textureGatherOffset(00n10B00B10D").mangledNameHash());
ASSERT_EQ(0x0000027eu, ImmutableString("textureGatherOffsets(00I10B70D").mangledNameHash());
ASSERT_EQ(0x00000508u, ImmutableString("textureGatherOffsets(00R10B70D").mangledNameHash());
@@ -1316,32 +1316,32 @@
ASSERT_EQ(0x00000576u, ImmutableString("textureGatherOffsets(00L20B70D").mangledNameHash());
ASSERT_EQ(0x00000259u, ImmutableString("textureGatherOffsets(00U20B70D").mangledNameHash());
ASSERT_EQ(0x000001acu, ImmutableString("textureGatherOffsets(00a20B70D").mangledNameHash());
- ASSERT_EQ(0x0000064eu, ImmutableString("textureGatherOffsets(00L20B70D00D").mangledNameHash());
- ASSERT_EQ(0x0000060eu, ImmutableString("textureGatherOffsets(00U20B70D00D").mangledNameHash());
+ ASSERT_EQ(0x0000064fu, ImmutableString("textureGatherOffsets(00L20B70D00D").mangledNameHash());
+ ASSERT_EQ(0x0000060fu, ImmutableString("textureGatherOffsets(00U20B70D00D").mangledNameHash());
ASSERT_EQ(0x000002ffu, ImmutableString("textureGatherOffsets(00a20B70D00D").mangledNameHash());
- ASSERT_EQ(0x00000610u, ImmutableString("textureGatherOffsets(00O10B70D").mangledNameHash());
- ASSERT_EQ(0x00000682u, ImmutableString("textureGatherOffsets(00q10B70D").mangledNameHash());
- ASSERT_EQ(0x000006f3u, ImmutableString("textureGatherOffsets(00v10B70D").mangledNameHash());
+ ASSERT_EQ(0x00000611u, ImmutableString("textureGatherOffsets(00O10B70D").mangledNameHash());
+ ASSERT_EQ(0x00000683u, ImmutableString("textureGatherOffsets(00q10B70D").mangledNameHash());
+ ASSERT_EQ(0x000006f4u, ImmutableString("textureGatherOffsets(00v10B70D").mangledNameHash());
ASSERT_EQ(0x00000100u, ImmutableString("textureGatherOffsets(00O10B70D00D").mangledNameHash());
- ASSERT_EQ(0x00000591u, ImmutableString("textureGatherOffsets(00q10B70D00D").mangledNameHash());
- ASSERT_EQ(0x00000697u, ImmutableString("textureGatherOffsets(00v10B70D00D").mangledNameHash());
+ ASSERT_EQ(0x00000592u, ImmutableString("textureGatherOffsets(00q10B70D00D").mangledNameHash());
+ ASSERT_EQ(0x00000698u, ImmutableString("textureGatherOffsets(00v10B70D00D").mangledNameHash());
ASSERT_EQ(0x00000330u, ImmutableString("textureGatherOffsets(00d10B00B70D").mangledNameHash());
ASSERT_EQ(0x00000053u, ImmutableString("textureGatherOffsets(00f20B00B70D").mangledNameHash());
ASSERT_EQ(0x000004b3u, ImmutableString("textureGatherOffsets(00n10B00B70D").mangledNameHash());
ASSERT_EQ(0x0000053du, ImmutableString("dFdxFine(00B").mangledNameHash());
ASSERT_EQ(0x000004aeu, ImmutableString("dFdxFine(10B").mangledNameHash());
- ASSERT_EQ(0x0000068cu, ImmutableString("dFdxFine(20B").mangledNameHash());
- ASSERT_EQ(0x000005e9u, ImmutableString("dFdxFine(30B").mangledNameHash());
+ ASSERT_EQ(0x0000068du, ImmutableString("dFdxFine(20B").mangledNameHash());
+ ASSERT_EQ(0x000005eau, ImmutableString("dFdxFine(30B").mangledNameHash());
ASSERT_EQ(0x00000369u, ImmutableString("dFdyFine(00B").mangledNameHash());
ASSERT_EQ(0x00000405u, ImmutableString("dFdyFine(10B").mangledNameHash());
ASSERT_EQ(0x000004aau, ImmutableString("dFdyFine(20B").mangledNameHash());
ASSERT_EQ(0x00000560u, ImmutableString("dFdyFine(30B").mangledNameHash());
ASSERT_EQ(0x0000031au, ImmutableString("dFdxCoarse(00B").mangledNameHash());
ASSERT_EQ(0x00000384u, ImmutableString("dFdxCoarse(10B").mangledNameHash());
- ASSERT_EQ(0x000007fdu, ImmutableString("dFdxCoarse(20B").mangledNameHash());
+ ASSERT_EQ(0x000007feu, ImmutableString("dFdxCoarse(20B").mangledNameHash());
ASSERT_EQ(0x00000283u, ImmutableString("dFdxCoarse(30B").mangledNameHash());
ASSERT_EQ(0x0000007du, ImmutableString("dFdyCoarse(00B").mangledNameHash());
- ASSERT_EQ(0x0000082au, ImmutableString("dFdyCoarse(10B").mangledNameHash());
+ ASSERT_EQ(0x0000082bu, ImmutableString("dFdyCoarse(10B").mangledNameHash());
ASSERT_EQ(0x0000056fu, ImmutableString("dFdyCoarse(20B").mangledNameHash());
ASSERT_EQ(0x000004bau, ImmutableString("dFdyCoarse(30B").mangledNameHash());
ASSERT_EQ(0x00000347u, ImmutableString("fwidthFine(00B").mangledNameHash());
@@ -1349,29 +1349,29 @@
ASSERT_EQ(0x00000497u, ImmutableString("fwidthFine(20B").mangledNameHash());
ASSERT_EQ(0x000003feu, ImmutableString("fwidthFine(30B").mangledNameHash());
ASSERT_EQ(0x0000056eu, ImmutableString("fwidthCoarse(00B").mangledNameHash());
- ASSERT_EQ(0x0000060cu, ImmutableString("fwidthCoarse(10B").mangledNameHash());
+ ASSERT_EQ(0x0000060du, ImmutableString("fwidthCoarse(10B").mangledNameHash());
ASSERT_EQ(0x00000411u, ImmutableString("fwidthCoarse(20B").mangledNameHash());
ASSERT_EQ(0x000004bdu, ImmutableString("fwidthCoarse(30B").mangledNameHash());
ASSERT_EQ(0x00000486u, ImmutableString("interpolateAtCentroid(00B").mangledNameHash());
ASSERT_EQ(0x000003dfu, ImmutableString("interpolateAtCentroid(10B").mangledNameHash());
- ASSERT_EQ(0x000005d6u, ImmutableString("interpolateAtCentroid(20B").mangledNameHash());
+ ASSERT_EQ(0x000005d7u, ImmutableString("interpolateAtCentroid(20B").mangledNameHash());
ASSERT_EQ(0x0000052du, ImmutableString("interpolateAtCentroid(30B").mangledNameHash());
- ASSERT_EQ(0x000006fcu, ImmutableString("interpolateAtSample(00B00D").mangledNameHash());
+ ASSERT_EQ(0x000006fdu, ImmutableString("interpolateAtSample(00B00D").mangledNameHash());
ASSERT_EQ(0x0000013cu, ImmutableString("interpolateAtSample(10B00D").mangledNameHash());
ASSERT_EQ(0x000002afu, ImmutableString("interpolateAtSample(20B00D").mangledNameHash());
ASSERT_EQ(0x00000282u, ImmutableString("interpolateAtSample(30B00D").mangledNameHash());
ASSERT_EQ(0x00000097u, ImmutableString("interpolateAtOffset(00B10B").mangledNameHash());
- ASSERT_EQ(0x000005efu, ImmutableString("interpolateAtOffset(10B10B").mangledNameHash());
+ ASSERT_EQ(0x000005f0u, ImmutableString("interpolateAtOffset(10B10B").mangledNameHash());
ASSERT_EQ(0x00000529u, ImmutableString("interpolateAtOffset(20B10B").mangledNameHash());
ASSERT_EQ(0x00000001u, ImmutableString("interpolateAtOffset(30B10B").mangledNameHash());
- ASSERT_EQ(0x000006d6u, ImmutableString("atomicCounter(00G").mangledNameHash());
- ASSERT_EQ(0x00000629u, ImmutableString("atomicCounterIncrement(00G").mangledNameHash());
+ ASSERT_EQ(0x000006d7u, ImmutableString("atomicCounter(00G").mangledNameHash());
+ ASSERT_EQ(0x0000062au, ImmutableString("atomicCounterIncrement(00G").mangledNameHash());
ASSERT_EQ(0x000001d9u, ImmutableString("atomicCounterDecrement(00G").mangledNameHash());
- ASSERT_EQ(0x000007a1u, ImmutableString("atomicCounterAdd(00G00E").mangledNameHash());
- ASSERT_EQ(0x00000595u, ImmutableString("atomicCounterSubtract(00G00E").mangledNameHash());
+ ASSERT_EQ(0x000007a2u, ImmutableString("atomicCounterAdd(00G00E").mangledNameHash());
+ ASSERT_EQ(0x00000596u, ImmutableString("atomicCounterSubtract(00G00E").mangledNameHash());
ASSERT_EQ(0x000004ccu, ImmutableString("atomicCounterMin(00G00E").mangledNameHash());
ASSERT_EQ(0x00000454u, ImmutableString("atomicCounterMax(00G00E").mangledNameHash());
- ASSERT_EQ(0x0000079eu, ImmutableString("atomicCounterAnd(00G00E").mangledNameHash());
+ ASSERT_EQ(0x0000079fu, ImmutableString("atomicCounterAnd(00G00E").mangledNameHash());
ASSERT_EQ(0x00000377u, ImmutableString("atomicCounterOr(00G00E").mangledNameHash());
ASSERT_EQ(0x00000544u, ImmutableString("atomicCounterXor(00G00E").mangledNameHash());
ASSERT_EQ(0x00000455u, ImmutableString("atomicCounterExchange(00G00E").mangledNameHash());
@@ -1380,16 +1380,16 @@
ASSERT_EQ(0x00000032u, ImmutableString("atomicAdd(00D00D").mangledNameHash());
ASSERT_EQ(0x000002eau, ImmutableString("atomicMin(00E00E").mangledNameHash());
ASSERT_EQ(0x00000426u, ImmutableString("atomicMin(00D00D").mangledNameHash());
- ASSERT_EQ(0x00000839u, ImmutableString("atomicMax(00E00E").mangledNameHash());
+ ASSERT_EQ(0x0000083au, ImmutableString("atomicMax(00E00E").mangledNameHash());
ASSERT_EQ(0x000004a3u, ImmutableString("atomicMax(00D00D").mangledNameHash());
- ASSERT_EQ(0x000006d2u, ImmutableString("atomicAnd(00E00E").mangledNameHash());
+ ASSERT_EQ(0x000006d3u, ImmutableString("atomicAnd(00E00E").mangledNameHash());
ASSERT_EQ(0x0000047du, ImmutableString("atomicAnd(00D00D").mangledNameHash());
ASSERT_EQ(0x0000054cu, ImmutableString("atomicOr(00E00E").mangledNameHash());
ASSERT_EQ(0x00000394u, ImmutableString("atomicOr(00D00D").mangledNameHash());
ASSERT_EQ(0x00000182u, ImmutableString("atomicXor(00E00E").mangledNameHash());
ASSERT_EQ(0x000000ebu, ImmutableString("atomicXor(00D00D").mangledNameHash());
ASSERT_EQ(0x0000024fu, ImmutableString("atomicExchange(00E00E").mangledNameHash());
- ASSERT_EQ(0x00000769u, ImmutableString("atomicExchange(00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000076au, ImmutableString("atomicExchange(00D00D").mangledNameHash());
ASSERT_EQ(0x000002c9u, ImmutableString("atomicCompSwap(00E00E00E").mangledNameHash());
ASSERT_EQ(0x00000365u, ImmutableString("atomicCompSwap(00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000311u, ImmutableString("imageSize(00y").mangledNameHash());
@@ -1409,15 +1409,15 @@
ASSERT_EQ(0x000003b2u, ImmutableString("imageSize(01M").mangledNameHash());
ASSERT_EQ(0x000003bau, ImmutableString("imageSize(01Z").mangledNameHash());
ASSERT_EQ(0x000003ccu, ImmutableString("imageSize(01a").mangledNameHash());
- ASSERT_EQ(0x000005f6u, ImmutableString("imageSize(01b").mangledNameHash());
+ ASSERT_EQ(0x000005f7u, ImmutableString("imageSize(01b").mangledNameHash());
ASSERT_EQ(0x000003cbu, ImmutableString("imageSize(01c").mangledNameHash());
ASSERT_EQ(0x000003cfu, ImmutableString("imageSize(01d").mangledNameHash());
- ASSERT_EQ(0x00000602u, ImmutableString("imageSize(01e").mangledNameHash());
+ ASSERT_EQ(0x00000603u, ImmutableString("imageSize(01e").mangledNameHash());
ASSERT_EQ(0x0000056bu, ImmutableString("imageSize(01N").mangledNameHash());
- ASSERT_EQ(0x000005b7u, ImmutableString("imageSize(01O").mangledNameHash());
+ ASSERT_EQ(0x000005b8u, ImmutableString("imageSize(01O").mangledNameHash());
ASSERT_EQ(0x000003c1u, ImmutableString("imageSize(01P").mangledNameHash());
ASSERT_EQ(0x000003cdu, ImmutableString("imageSize(01f").mangledNameHash());
- ASSERT_EQ(0x00000600u, ImmutableString("imageSize(01g").mangledNameHash());
+ ASSERT_EQ(0x00000601u, ImmutableString("imageSize(01g").mangledNameHash());
ASSERT_EQ(0x000003c7u, ImmutableString("imageSize(01h").mangledNameHash());
ASSERT_EQ(0x000003c2u, ImmutableString("imageSize(01Q").mangledNameHash());
ASSERT_EQ(0x000003bfu, ImmutableString("imageSize(01R").mangledNameHash());
@@ -1431,94 +1431,94 @@
ASSERT_EQ(0x00000019u, ImmutableString("imageSamples(01T").mangledNameHash());
ASSERT_EQ(0x00000018u, ImmutableString("imageSamples(01U").mangledNameHash());
ASSERT_EQ(0x00000017u, ImmutableString("imageSamples(01V").mangledNameHash());
- ASSERT_EQ(0x00000618u, ImmutableString("imageAtomicAdd(00y10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000619u, ImmutableString("imageAtomicAdd(00y10D00E").mangledNameHash());
ASSERT_EQ(0x00000010u, ImmutableString("imageAtomicAdd(00z10D00E").mangledNameHash());
- ASSERT_EQ(0x0000084cu, ImmutableString("imageAtomicAdd(01A10D00E").mangledNameHash());
+ ASSERT_EQ(0x0000084du, ImmutableString("imageAtomicAdd(01A10D00E").mangledNameHash());
ASSERT_EQ(0x00000225u, ImmutableString("imageAtomicAdd(01B20D00E").mangledNameHash());
ASSERT_EQ(0x0000033du, ImmutableString("imageAtomicAdd(01C20D00E").mangledNameHash());
ASSERT_EQ(0x00000031u, ImmutableString("imageAtomicAdd(01D20D00E").mangledNameHash());
- ASSERT_EQ(0x000006e9u, ImmutableString("imageAtomicAdd(01H20D00E").mangledNameHash());
+ ASSERT_EQ(0x000006eau, ImmutableString("imageAtomicAdd(01H20D00E").mangledNameHash());
ASSERT_EQ(0x00000128u, ImmutableString("imageAtomicAdd(01I20D00E").mangledNameHash());
- ASSERT_EQ(0x0000062bu, ImmutableString("imageAtomicAdd(01J20D00E").mangledNameHash());
- ASSERT_EQ(0x000006c8u, ImmutableString("imageAtomicAdd(01f00D00E").mangledNameHash());
+ ASSERT_EQ(0x0000062cu, ImmutableString("imageAtomicAdd(01J20D00E").mangledNameHash());
+ ASSERT_EQ(0x000006c9u, ImmutableString("imageAtomicAdd(01f00D00E").mangledNameHash());
ASSERT_EQ(0x00000388u, ImmutableString("imageAtomicAdd(01g00D00E").mangledNameHash());
ASSERT_EQ(0x000001feu, ImmutableString("imageAtomicAdd(01h00D00E").mangledNameHash());
ASSERT_EQ(0x000000c9u, ImmutableString("imageAtomicAdd(01E20D00E").mangledNameHash());
- ASSERT_EQ(0x00000684u, ImmutableString("imageAtomicAdd(01F20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000685u, ImmutableString("imageAtomicAdd(01F20D00E").mangledNameHash());
ASSERT_EQ(0x0000039au, ImmutableString("imageAtomicAdd(01G20D00E").mangledNameHash());
- ASSERT_EQ(0x0000058fu, ImmutableString("imageAtomicAdd(01Z20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000590u, ImmutableString("imageAtomicAdd(01Z20D00E").mangledNameHash());
ASSERT_EQ(0x000003fdu, ImmutableString("imageAtomicAdd(01a20D00E").mangledNameHash());
- ASSERT_EQ(0x000006a3u, ImmutableString("imageAtomicAdd(01b20D00E").mangledNameHash());
+ ASSERT_EQ(0x000006a4u, ImmutableString("imageAtomicAdd(01b20D00E").mangledNameHash());
ASSERT_EQ(0x0000008fu, ImmutableString("imageAtomicAdd(01K00D00E").mangledNameHash());
- ASSERT_EQ(0x000005eau, ImmutableString("imageAtomicAdd(01L00D00E").mangledNameHash());
- ASSERT_EQ(0x00000799u, ImmutableString("imageAtomicAdd(01M00D00E").mangledNameHash());
+ ASSERT_EQ(0x000005ebu, ImmutableString("imageAtomicAdd(01L00D00E").mangledNameHash());
+ ASSERT_EQ(0x0000079au, ImmutableString("imageAtomicAdd(01M00D00E").mangledNameHash());
ASSERT_EQ(0x000003a0u, ImmutableString("imageAtomicAdd(01N10D00E").mangledNameHash());
- ASSERT_EQ(0x000005d0u, ImmutableString("imageAtomicAdd(01O10D00E").mangledNameHash());
- ASSERT_EQ(0x00000714u, ImmutableString("imageAtomicAdd(01P10D00E").mangledNameHash());
- ASSERT_EQ(0x000007e1u, ImmutableString("imageAtomicAdd(01W10D00E").mangledNameHash());
- ASSERT_EQ(0x0000074fu, ImmutableString("imageAtomicAdd(01X10D00E").mangledNameHash());
+ ASSERT_EQ(0x000005d1u, ImmutableString("imageAtomicAdd(01O10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000715u, ImmutableString("imageAtomicAdd(01P10D00E").mangledNameHash());
+ ASSERT_EQ(0x000007e2u, ImmutableString("imageAtomicAdd(01W10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000750u, ImmutableString("imageAtomicAdd(01X10D00E").mangledNameHash());
ASSERT_EQ(0x0000017cu, ImmutableString("imageAtomicAdd(01Y10D00E").mangledNameHash());
ASSERT_EQ(0x00000354u, ImmutableString("imageAtomicAdd(01Q10D00D00E").mangledNameHash());
ASSERT_EQ(0x00000358u, ImmutableString("imageAtomicAdd(01R10D00D00E").mangledNameHash());
- ASSERT_EQ(0x00000640u, ImmutableString("imageAtomicAdd(01S10D00D00E").mangledNameHash());
- ASSERT_EQ(0x0000080cu, ImmutableString("imageAtomicAdd(01T20D00D00E").mangledNameHash());
- ASSERT_EQ(0x00000630u, ImmutableString("imageAtomicAdd(01U20D00D00E").mangledNameHash());
+ ASSERT_EQ(0x00000641u, ImmutableString("imageAtomicAdd(01S10D00D00E").mangledNameHash());
+ ASSERT_EQ(0x0000080du, ImmutableString("imageAtomicAdd(01T20D00D00E").mangledNameHash());
+ ASSERT_EQ(0x00000631u, ImmutableString("imageAtomicAdd(01U20D00D00E").mangledNameHash());
ASSERT_EQ(0x000001e6u, ImmutableString("imageAtomicAdd(01V20D00D00E").mangledNameHash());
- ASSERT_EQ(0x00000619u, ImmutableString("imageAtomicAdd(00y10D00D").mangledNameHash());
+ ASSERT_EQ(0x0000061au, ImmutableString("imageAtomicAdd(00y10D00D").mangledNameHash());
ASSERT_EQ(0x0000024du, ImmutableString("imageAtomicAdd(00z10D00D").mangledNameHash());
- ASSERT_EQ(0x0000084bu, ImmutableString("imageAtomicAdd(01A10D00D").mangledNameHash());
+ ASSERT_EQ(0x0000084cu, ImmutableString("imageAtomicAdd(01A10D00D").mangledNameHash());
ASSERT_EQ(0x00000224u, ImmutableString("imageAtomicAdd(01B20D00D").mangledNameHash());
ASSERT_EQ(0x000002bdu, ImmutableString("imageAtomicAdd(01C20D00D").mangledNameHash());
- ASSERT_EQ(0x00000707u, ImmutableString("imageAtomicAdd(01D20D00D").mangledNameHash());
- ASSERT_EQ(0x000006e8u, ImmutableString("imageAtomicAdd(01H20D00D").mangledNameHash());
- ASSERT_EQ(0x0000071fu, ImmutableString("imageAtomicAdd(01I20D00D").mangledNameHash());
- ASSERT_EQ(0x0000062au, ImmutableString("imageAtomicAdd(01J20D00D").mangledNameHash());
- ASSERT_EQ(0x000006c6u, ImmutableString("imageAtomicAdd(01f00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000708u, ImmutableString("imageAtomicAdd(01D20D00D").mangledNameHash());
+ ASSERT_EQ(0x000006e9u, ImmutableString("imageAtomicAdd(01H20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000720u, ImmutableString("imageAtomicAdd(01I20D00D").mangledNameHash());
+ ASSERT_EQ(0x0000062bu, ImmutableString("imageAtomicAdd(01J20D00D").mangledNameHash());
+ ASSERT_EQ(0x000006c7u, ImmutableString("imageAtomicAdd(01f00D00D").mangledNameHash());
ASSERT_EQ(0x0000020du, ImmutableString("imageAtomicAdd(01g00D00D").mangledNameHash());
ASSERT_EQ(0x000001fdu, ImmutableString("imageAtomicAdd(01h00D00D").mangledNameHash());
- ASSERT_EQ(0x00000723u, ImmutableString("imageAtomicAdd(01E20D00D").mangledNameHash());
- ASSERT_EQ(0x00000683u, ImmutableString("imageAtomicAdd(01F20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000724u, ImmutableString("imageAtomicAdd(01E20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000684u, ImmutableString("imageAtomicAdd(01F20D00D").mangledNameHash());
ASSERT_EQ(0x0000039bu, ImmutableString("imageAtomicAdd(01G20D00D").mangledNameHash());
- ASSERT_EQ(0x0000058eu, ImmutableString("imageAtomicAdd(01Z20D00D").mangledNameHash());
- ASSERT_EQ(0x00000700u, ImmutableString("imageAtomicAdd(01a20D00D").mangledNameHash());
- ASSERT_EQ(0x000005d5u, ImmutableString("imageAtomicAdd(01b20D00D").mangledNameHash());
+ ASSERT_EQ(0x0000058fu, ImmutableString("imageAtomicAdd(01Z20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000701u, ImmutableString("imageAtomicAdd(01a20D00D").mangledNameHash());
+ ASSERT_EQ(0x000005d6u, ImmutableString("imageAtomicAdd(01b20D00D").mangledNameHash());
ASSERT_EQ(0x00000090u, ImmutableString("imageAtomicAdd(01K00D00D").mangledNameHash());
ASSERT_EQ(0x00000274u, ImmutableString("imageAtomicAdd(01L00D00D").mangledNameHash());
- ASSERT_EQ(0x0000079au, ImmutableString("imageAtomicAdd(01M00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000079bu, ImmutableString("imageAtomicAdd(01M00D00D").mangledNameHash());
ASSERT_EQ(0x000003a1u, ImmutableString("imageAtomicAdd(01N10D00D").mangledNameHash());
- ASSERT_EQ(0x000005cfu, ImmutableString("imageAtomicAdd(01O10D00D").mangledNameHash());
- ASSERT_EQ(0x00000715u, ImmutableString("imageAtomicAdd(01P10D00D").mangledNameHash());
- ASSERT_EQ(0x000007e0u, ImmutableString("imageAtomicAdd(01W10D00D").mangledNameHash());
- ASSERT_EQ(0x00000752u, ImmutableString("imageAtomicAdd(01X10D00D").mangledNameHash());
+ ASSERT_EQ(0x000005d0u, ImmutableString("imageAtomicAdd(01O10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000716u, ImmutableString("imageAtomicAdd(01P10D00D").mangledNameHash());
+ ASSERT_EQ(0x000007e1u, ImmutableString("imageAtomicAdd(01W10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000753u, ImmutableString("imageAtomicAdd(01X10D00D").mangledNameHash());
ASSERT_EQ(0x0000017bu, ImmutableString("imageAtomicAdd(01Y10D00D").mangledNameHash());
ASSERT_EQ(0x00000376u, ImmutableString("imageAtomicAdd(01Q10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000357u, ImmutableString("imageAtomicAdd(01R10D00D00D").mangledNameHash());
ASSERT_EQ(0x000002d6u, ImmutableString("imageAtomicAdd(01S10D00D00D").mangledNameHash());
- ASSERT_EQ(0x0000080du, ImmutableString("imageAtomicAdd(01T20D00D00D").mangledNameHash());
- ASSERT_EQ(0x0000062fu, ImmutableString("imageAtomicAdd(01U20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000080eu, ImmutableString("imageAtomicAdd(01T20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000630u, ImmutableString("imageAtomicAdd(01U20D00D00D").mangledNameHash());
ASSERT_EQ(0x000002f6u, ImmutableString("imageAtomicAdd(01V20D00D00D").mangledNameHash());
ASSERT_EQ(0x00000108u, ImmutableString("imageAtomicMin(00y10D00E").mangledNameHash());
- ASSERT_EQ(0x000005a1u, ImmutableString("imageAtomicMin(00z10D00E").mangledNameHash());
- ASSERT_EQ(0x0000057fu, ImmutableString("imageAtomicMin(01A10D00E").mangledNameHash());
- ASSERT_EQ(0x0000083au, ImmutableString("imageAtomicMin(01B20D00E").mangledNameHash());
+ ASSERT_EQ(0x000005a2u, ImmutableString("imageAtomicMin(00z10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000580u, ImmutableString("imageAtomicMin(01A10D00E").mangledNameHash());
+ ASSERT_EQ(0x0000083bu, ImmutableString("imageAtomicMin(01B20D00E").mangledNameHash());
ASSERT_EQ(0x000002a9u, ImmutableString("imageAtomicMin(01C20D00E").mangledNameHash());
ASSERT_EQ(0x0000040eu, ImmutableString("imageAtomicMin(01D20D00E").mangledNameHash());
ASSERT_EQ(0x00000226u, ImmutableString("imageAtomicMin(01H20D00E").mangledNameHash());
- ASSERT_EQ(0x00000728u, ImmutableString("imageAtomicMin(01I20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000729u, ImmutableString("imageAtomicMin(01I20D00E").mangledNameHash());
ASSERT_EQ(0x0000018cu, ImmutableString("imageAtomicMin(01J20D00E").mangledNameHash());
- ASSERT_EQ(0x000006b7u, ImmutableString("imageAtomicMin(01f00D00E").mangledNameHash());
+ ASSERT_EQ(0x000006b8u, ImmutableString("imageAtomicMin(01f00D00E").mangledNameHash());
ASSERT_EQ(0x0000037fu, ImmutableString("imageAtomicMin(01g00D00E").mangledNameHash());
ASSERT_EQ(0x0000011du, ImmutableString("imageAtomicMin(01h00D00E").mangledNameHash());
- ASSERT_EQ(0x000005c9u, ImmutableString("imageAtomicMin(01E20D00E").mangledNameHash());
+ ASSERT_EQ(0x000005cau, ImmutableString("imageAtomicMin(01E20D00E").mangledNameHash());
ASSERT_EQ(0x0000013du, ImmutableString("imageAtomicMin(01F20D00E").mangledNameHash());
ASSERT_EQ(0x0000027du, ImmutableString("imageAtomicMin(01G20D00E").mangledNameHash());
- ASSERT_EQ(0x000006a1u, ImmutableString("imageAtomicMin(01Z20D00E").mangledNameHash());
- ASSERT_EQ(0x000006a4u, ImmutableString("imageAtomicMin(01a20D00E").mangledNameHash());
+ ASSERT_EQ(0x000006a2u, ImmutableString("imageAtomicMin(01Z20D00E").mangledNameHash());
+ ASSERT_EQ(0x000006a5u, ImmutableString("imageAtomicMin(01a20D00E").mangledNameHash());
ASSERT_EQ(0x00000291u, ImmutableString("imageAtomicMin(01b20D00E").mangledNameHash());
- ASSERT_EQ(0x000007cfu, ImmutableString("imageAtomicMin(01K00D00E").mangledNameHash());
+ ASSERT_EQ(0x000007d0u, ImmutableString("imageAtomicMin(01K00D00E").mangledNameHash());
ASSERT_EQ(0x00000549u, ImmutableString("imageAtomicMin(01L00D00E").mangledNameHash());
ASSERT_EQ(0x0000048eu, ImmutableString("imageAtomicMin(01M00D00E").mangledNameHash());
- ASSERT_EQ(0x000007a9u, ImmutableString("imageAtomicMin(01N10D00E").mangledNameHash());
+ ASSERT_EQ(0x000007aau, ImmutableString("imageAtomicMin(01N10D00E").mangledNameHash());
ASSERT_EQ(0x00000490u, ImmutableString("imageAtomicMin(01O10D00E").mangledNameHash());
ASSERT_EQ(0x0000033cu, ImmutableString("imageAtomicMin(01P10D00E").mangledNameHash());
ASSERT_EQ(0x00000312u, ImmutableString("imageAtomicMin(01W10D00E").mangledNameHash());
@@ -1526,32 +1526,32 @@
ASSERT_EQ(0x0000010fu, ImmutableString("imageAtomicMin(01Y10D00E").mangledNameHash());
ASSERT_EQ(0x000002ecu, ImmutableString("imageAtomicMin(01Q10D00D00E").mangledNameHash());
ASSERT_EQ(0x00000051u, ImmutableString("imageAtomicMin(01R10D00D00E").mangledNameHash());
- ASSERT_EQ(0x00000705u, ImmutableString("imageAtomicMin(01S10D00D00E").mangledNameHash());
+ ASSERT_EQ(0x00000706u, ImmutableString("imageAtomicMin(01S10D00D00E").mangledNameHash());
ASSERT_EQ(0x00000153u, ImmutableString("imageAtomicMin(01T20D00D00E").mangledNameHash());
- ASSERT_EQ(0x0000073bu, ImmutableString("imageAtomicMin(01U20D00D00E").mangledNameHash());
- ASSERT_EQ(0x00000672u, ImmutableString("imageAtomicMin(01V20D00D00E").mangledNameHash());
+ ASSERT_EQ(0x0000073cu, ImmutableString("imageAtomicMin(01U20D00D00E").mangledNameHash());
+ ASSERT_EQ(0x00000673u, ImmutableString("imageAtomicMin(01V20D00D00E").mangledNameHash());
ASSERT_EQ(0x00000107u, ImmutableString("imageAtomicMin(00y10D00D").mangledNameHash());
- ASSERT_EQ(0x000005a2u, ImmutableString("imageAtomicMin(00z10D00D").mangledNameHash());
- ASSERT_EQ(0x00000580u, ImmutableString("imageAtomicMin(01A10D00D").mangledNameHash());
- ASSERT_EQ(0x0000083bu, ImmutableString("imageAtomicMin(01B20D00D").mangledNameHash());
+ ASSERT_EQ(0x000005a3u, ImmutableString("imageAtomicMin(00z10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000581u, ImmutableString("imageAtomicMin(01A10D00D").mangledNameHash());
+ ASSERT_EQ(0x0000083cu, ImmutableString("imageAtomicMin(01B20D00D").mangledNameHash());
ASSERT_EQ(0x000002a8u, ImmutableString("imageAtomicMin(01C20D00D").mangledNameHash());
- ASSERT_EQ(0x00000768u, ImmutableString("imageAtomicMin(01D20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000769u, ImmutableString("imageAtomicMin(01D20D00D").mangledNameHash());
ASSERT_EQ(0x0000041fu, ImmutableString("imageAtomicMin(01H20D00D").mangledNameHash());
ASSERT_EQ(0x000000dcu, ImmutableString("imageAtomicMin(01I20D00D").mangledNameHash());
ASSERT_EQ(0x000003d2u, ImmutableString("imageAtomicMin(01J20D00D").mangledNameHash());
- ASSERT_EQ(0x000006b8u, ImmutableString("imageAtomicMin(01f00D00D").mangledNameHash());
- ASSERT_EQ(0x00000794u, ImmutableString("imageAtomicMin(01g00D00D").mangledNameHash());
+ ASSERT_EQ(0x000006b9u, ImmutableString("imageAtomicMin(01f00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000795u, ImmutableString("imageAtomicMin(01g00D00D").mangledNameHash());
ASSERT_EQ(0x0000011eu, ImmutableString("imageAtomicMin(01h00D00D").mangledNameHash());
- ASSERT_EQ(0x000005c8u, ImmutableString("imageAtomicMin(01E20D00D").mangledNameHash());
+ ASSERT_EQ(0x000005c9u, ImmutableString("imageAtomicMin(01E20D00D").mangledNameHash());
ASSERT_EQ(0x0000013eu, ImmutableString("imageAtomicMin(01F20D00D").mangledNameHash());
ASSERT_EQ(0x0000027cu, ImmutableString("imageAtomicMin(01G20D00D").mangledNameHash());
- ASSERT_EQ(0x000006a2u, ImmutableString("imageAtomicMin(01Z20D00D").mangledNameHash());
+ ASSERT_EQ(0x000006a3u, ImmutableString("imageAtomicMin(01Z20D00D").mangledNameHash());
ASSERT_EQ(0x0000031bu, ImmutableString("imageAtomicMin(01a20D00D").mangledNameHash());
ASSERT_EQ(0x00000292u, ImmutableString("imageAtomicMin(01b20D00D").mangledNameHash());
- ASSERT_EQ(0x000007ceu, ImmutableString("imageAtomicMin(01K00D00D").mangledNameHash());
- ASSERT_EQ(0x0000068du, ImmutableString("imageAtomicMin(01L00D00D").mangledNameHash());
+ ASSERT_EQ(0x000007cfu, ImmutableString("imageAtomicMin(01K00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000068eu, ImmutableString("imageAtomicMin(01L00D00D").mangledNameHash());
ASSERT_EQ(0x0000048du, ImmutableString("imageAtomicMin(01M00D00D").mangledNameHash());
- ASSERT_EQ(0x000007a8u, ImmutableString("imageAtomicMin(01N10D00D").mangledNameHash());
+ ASSERT_EQ(0x000007a9u, ImmutableString("imageAtomicMin(01N10D00D").mangledNameHash());
ASSERT_EQ(0x00000491u, ImmutableString("imageAtomicMin(01O10D00D").mangledNameHash());
ASSERT_EQ(0x000002b8u, ImmutableString("imageAtomicMin(01P10D00D").mangledNameHash());
ASSERT_EQ(0x000001a9u, ImmutableString("imageAtomicMin(01W10D00D").mangledNameHash());
@@ -1559,65 +1559,65 @@
ASSERT_EQ(0x0000003au, ImmutableString("imageAtomicMin(01Y10D00D").mangledNameHash());
ASSERT_EQ(0x000002ebu, ImmutableString("imageAtomicMin(01Q10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000052u, ImmutableString("imageAtomicMin(01R10D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000704u, ImmutableString("imageAtomicMin(01S10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000705u, ImmutableString("imageAtomicMin(01S10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000152u, ImmutableString("imageAtomicMin(01T20D00D00D").mangledNameHash());
- ASSERT_EQ(0x0000073cu, ImmutableString("imageAtomicMin(01U20D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000671u, ImmutableString("imageAtomicMin(01V20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000073du, ImmutableString("imageAtomicMin(01U20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000672u, ImmutableString("imageAtomicMin(01V20D00D00D").mangledNameHash());
ASSERT_EQ(0x0000047cu, ImmutableString("imageAtomicMax(00y10D00E").mangledNameHash());
ASSERT_EQ(0x000003f4u, ImmutableString("imageAtomicMax(00z10D00E").mangledNameHash());
ASSERT_EQ(0x000000e0u, ImmutableString("imageAtomicMax(01A10D00E").mangledNameHash());
ASSERT_EQ(0x000004ecu, ImmutableString("imageAtomicMax(01B20D00E").mangledNameHash());
- ASSERT_EQ(0x0000070cu, ImmutableString("imageAtomicMax(01C20D00E").mangledNameHash());
+ ASSERT_EQ(0x0000070du, ImmutableString("imageAtomicMax(01C20D00E").mangledNameHash());
ASSERT_EQ(0x000002dau, ImmutableString("imageAtomicMax(01D20D00E").mangledNameHash());
ASSERT_EQ(0x0000032du, ImmutableString("imageAtomicMax(01H20D00E").mangledNameHash());
ASSERT_EQ(0x00000553u, ImmutableString("imageAtomicMax(01I20D00E").mangledNameHash());
- ASSERT_EQ(0x00000766u, ImmutableString("imageAtomicMax(01J20D00E").mangledNameHash());
- ASSERT_EQ(0x00000643u, ImmutableString("imageAtomicMax(01f00D00E").mangledNameHash());
- ASSERT_EQ(0x00000607u, ImmutableString("imageAtomicMax(01g00D00E").mangledNameHash());
- ASSERT_EQ(0x0000074cu, ImmutableString("imageAtomicMax(01h00D00E").mangledNameHash());
+ ASSERT_EQ(0x00000767u, ImmutableString("imageAtomicMax(01J20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000644u, ImmutableString("imageAtomicMax(01f00D00E").mangledNameHash());
+ ASSERT_EQ(0x00000608u, ImmutableString("imageAtomicMax(01g00D00E").mangledNameHash());
+ ASSERT_EQ(0x0000074du, ImmutableString("imageAtomicMax(01h00D00E").mangledNameHash());
ASSERT_EQ(0x00000408u, ImmutableString("imageAtomicMax(01E20D00E").mangledNameHash());
ASSERT_EQ(0x0000050eu, ImmutableString("imageAtomicMax(01F20D00E").mangledNameHash());
- ASSERT_EQ(0x000005fbu, ImmutableString("imageAtomicMax(01G20D00E").mangledNameHash());
+ ASSERT_EQ(0x000005fcu, ImmutableString("imageAtomicMax(01G20D00E").mangledNameHash());
ASSERT_EQ(0x000003bcu, ImmutableString("imageAtomicMax(01Z20D00E").mangledNameHash());
ASSERT_EQ(0x00000509u, ImmutableString("imageAtomicMax(01a20D00E").mangledNameHash());
ASSERT_EQ(0x0000027bu, ImmutableString("imageAtomicMax(01b20D00E").mangledNameHash());
ASSERT_EQ(0x00000058u, ImmutableString("imageAtomicMax(01K00D00E").mangledNameHash());
- ASSERT_EQ(0x00000755u, ImmutableString("imageAtomicMax(01L00D00E").mangledNameHash());
- ASSERT_EQ(0x00000721u, ImmutableString("imageAtomicMax(01M00D00E").mangledNameHash());
- ASSERT_EQ(0x0000073fu, ImmutableString("imageAtomicMax(01N10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000756u, ImmutableString("imageAtomicMax(01L00D00E").mangledNameHash());
+ ASSERT_EQ(0x00000722u, ImmutableString("imageAtomicMax(01M00D00E").mangledNameHash());
+ ASSERT_EQ(0x00000740u, ImmutableString("imageAtomicMax(01N10D00E").mangledNameHash());
ASSERT_EQ(0x0000043bu, ImmutableString("imageAtomicMax(01O10D00E").mangledNameHash());
ASSERT_EQ(0x00000294u, ImmutableString("imageAtomicMax(01P10D00E").mangledNameHash());
- ASSERT_EQ(0x0000062du, ImmutableString("imageAtomicMax(01W10D00E").mangledNameHash());
+ ASSERT_EQ(0x0000062eu, ImmutableString("imageAtomicMax(01W10D00E").mangledNameHash());
ASSERT_EQ(0x00000278u, ImmutableString("imageAtomicMax(01X10D00E").mangledNameHash());
ASSERT_EQ(0x000000a4u, ImmutableString("imageAtomicMax(01Y10D00E").mangledNameHash());
ASSERT_EQ(0x000000bau, ImmutableString("imageAtomicMax(01Q10D00D00E").mangledNameHash());
ASSERT_EQ(0x00000138u, ImmutableString("imageAtomicMax(01R10D00D00E").mangledNameHash());
ASSERT_EQ(0x0000003eu, ImmutableString("imageAtomicMax(01S10D00D00E").mangledNameHash());
- ASSERT_EQ(0x000006a8u, ImmutableString("imageAtomicMax(01T20D00D00E").mangledNameHash());
+ ASSERT_EQ(0x000006a9u, ImmutableString("imageAtomicMax(01T20D00D00E").mangledNameHash());
ASSERT_EQ(0x0000014fu, ImmutableString("imageAtomicMax(01U20D00D00E").mangledNameHash());
ASSERT_EQ(0x000003fbu, ImmutableString("imageAtomicMax(01V20D00D00E").mangledNameHash());
ASSERT_EQ(0x0000047bu, ImmutableString("imageAtomicMax(00y10D00D").mangledNameHash());
ASSERT_EQ(0x000003f5u, ImmutableString("imageAtomicMax(00z10D00D").mangledNameHash());
ASSERT_EQ(0x000000e1u, ImmutableString("imageAtomicMax(01A10D00D").mangledNameHash());
ASSERT_EQ(0x00000387u, ImmutableString("imageAtomicMax(01B20D00D").mangledNameHash());
- ASSERT_EQ(0x0000070bu, ImmutableString("imageAtomicMax(01C20D00D").mangledNameHash());
+ ASSERT_EQ(0x0000070cu, ImmutableString("imageAtomicMax(01C20D00D").mangledNameHash());
ASSERT_EQ(0x000002dbu, ImmutableString("imageAtomicMax(01D20D00D").mangledNameHash());
ASSERT_EQ(0x0000032eu, ImmutableString("imageAtomicMax(01H20D00D").mangledNameHash());
ASSERT_EQ(0x00000552u, ImmutableString("imageAtomicMax(01I20D00D").mangledNameHash());
- ASSERT_EQ(0x00000767u, ImmutableString("imageAtomicMax(01J20D00D").mangledNameHash());
- ASSERT_EQ(0x00000644u, ImmutableString("imageAtomicMax(01f00D00D").mangledNameHash());
- ASSERT_EQ(0x00000606u, ImmutableString("imageAtomicMax(01g00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000768u, ImmutableString("imageAtomicMax(01J20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000645u, ImmutableString("imageAtomicMax(01f00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000607u, ImmutableString("imageAtomicMax(01g00D00D").mangledNameHash());
ASSERT_EQ(0x000002b2u, ImmutableString("imageAtomicMax(01h00D00D").mangledNameHash());
ASSERT_EQ(0x00000407u, ImmutableString("imageAtomicMax(01E20D00D").mangledNameHash());
ASSERT_EQ(0x0000050fu, ImmutableString("imageAtomicMax(01F20D00D").mangledNameHash());
- ASSERT_EQ(0x000005fau, ImmutableString("imageAtomicMax(01G20D00D").mangledNameHash());
- ASSERT_EQ(0x000007f8u, ImmutableString("imageAtomicMax(01Z20D00D").mangledNameHash());
+ ASSERT_EQ(0x000005fbu, ImmutableString("imageAtomicMax(01G20D00D").mangledNameHash());
+ ASSERT_EQ(0x000007f9u, ImmutableString("imageAtomicMax(01Z20D00D").mangledNameHash());
ASSERT_EQ(0x00000466u, ImmutableString("imageAtomicMax(01a20D00D").mangledNameHash());
ASSERT_EQ(0x000001d5u, ImmutableString("imageAtomicMax(01b20D00D").mangledNameHash());
ASSERT_EQ(0x00000057u, ImmutableString("imageAtomicMax(01K00D00D").mangledNameHash());
- ASSERT_EQ(0x00000756u, ImmutableString("imageAtomicMax(01L00D00D").mangledNameHash());
- ASSERT_EQ(0x00000720u, ImmutableString("imageAtomicMax(01M00D00D").mangledNameHash());
- ASSERT_EQ(0x0000073eu, ImmutableString("imageAtomicMax(01N10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000757u, ImmutableString("imageAtomicMax(01L00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000721u, ImmutableString("imageAtomicMax(01M00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000073fu, ImmutableString("imageAtomicMax(01N10D00D").mangledNameHash());
ASSERT_EQ(0x0000043cu, ImmutableString("imageAtomicMax(01O10D00D").mangledNameHash());
ASSERT_EQ(0x00000293u, ImmutableString("imageAtomicMax(01P10D00D").mangledNameHash());
ASSERT_EQ(0x000002feu, ImmutableString("imageAtomicMax(01W10D00D").mangledNameHash());
@@ -1626,49 +1626,49 @@
ASSERT_EQ(0x000000b9u, ImmutableString("imageAtomicMax(01Q10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000139u, ImmutableString("imageAtomicMax(01R10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000125u, ImmutableString("imageAtomicMax(01S10D00D00D").mangledNameHash());
- ASSERT_EQ(0x000006a7u, ImmutableString("imageAtomicMax(01T20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000006a8u, ImmutableString("imageAtomicMax(01T20D00D00D").mangledNameHash());
ASSERT_EQ(0x00000150u, ImmutableString("imageAtomicMax(01U20D00D00D").mangledNameHash());
- ASSERT_EQ(0x000006deu, ImmutableString("imageAtomicMax(01V20D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000827u, ImmutableString("imageAtomicAnd(00y10D00E").mangledNameHash());
- ASSERT_EQ(0x000007d2u, ImmutableString("imageAtomicAnd(00z10D00E").mangledNameHash());
+ ASSERT_EQ(0x000006dfu, ImmutableString("imageAtomicMax(01V20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000828u, ImmutableString("imageAtomicAnd(00y10D00E").mangledNameHash());
+ ASSERT_EQ(0x000007d3u, ImmutableString("imageAtomicAnd(00z10D00E").mangledNameHash());
ASSERT_EQ(0x000000ffu, ImmutableString("imageAtomicAnd(01A10D00E").mangledNameHash());
- ASSERT_EQ(0x0000063fu, ImmutableString("imageAtomicAnd(01B20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000640u, ImmutableString("imageAtomicAnd(01B20D00E").mangledNameHash());
ASSERT_EQ(0x0000006au, ImmutableString("imageAtomicAnd(01C20D00E").mangledNameHash());
- ASSERT_EQ(0x000006b4u, ImmutableString("imageAtomicAnd(01D20D00E").mangledNameHash());
- ASSERT_EQ(0x0000077fu, ImmutableString("imageAtomicAnd(01H20D00E").mangledNameHash());
- ASSERT_EQ(0x0000075eu, ImmutableString("imageAtomicAnd(01I20D00E").mangledNameHash());
+ ASSERT_EQ(0x000006b5u, ImmutableString("imageAtomicAnd(01D20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000780u, ImmutableString("imageAtomicAnd(01H20D00E").mangledNameHash());
+ ASSERT_EQ(0x0000075fu, ImmutableString("imageAtomicAnd(01I20D00E").mangledNameHash());
ASSERT_EQ(0x00000123u, ImmutableString("imageAtomicAnd(01J20D00E").mangledNameHash());
ASSERT_EQ(0x00000016u, ImmutableString("imageAtomicAnd(01f00D00E").mangledNameHash());
ASSERT_EQ(0x000001f3u, ImmutableString("imageAtomicAnd(01g00D00E").mangledNameHash());
ASSERT_EQ(0x000003a4u, ImmutableString("imageAtomicAnd(01h00D00E").mangledNameHash());
ASSERT_EQ(0x00000499u, ImmutableString("imageAtomicAnd(01E20D00E").mangledNameHash());
ASSERT_EQ(0x000002aau, ImmutableString("imageAtomicAnd(01F20D00E").mangledNameHash());
- ASSERT_EQ(0x00000805u, ImmutableString("imageAtomicAnd(01G20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000806u, ImmutableString("imageAtomicAnd(01G20D00E").mangledNameHash());
ASSERT_EQ(0x00000175u, ImmutableString("imageAtomicAnd(01Z20D00E").mangledNameHash());
- ASSERT_EQ(0x00000793u, ImmutableString("imageAtomicAnd(01a20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000794u, ImmutableString("imageAtomicAnd(01a20D00E").mangledNameHash());
ASSERT_EQ(0x00000094u, ImmutableString("imageAtomicAnd(01b20D00E").mangledNameHash());
ASSERT_EQ(0x000004afu, ImmutableString("imageAtomicAnd(01K00D00E").mangledNameHash());
ASSERT_EQ(0x0000025bu, ImmutableString("imageAtomicAnd(01L00D00E").mangledNameHash());
ASSERT_EQ(0x00000214u, ImmutableString("imageAtomicAnd(01M00D00E").mangledNameHash());
- ASSERT_EQ(0x00000692u, ImmutableString("imageAtomicAnd(01N10D00E").mangledNameHash());
- ASSERT_EQ(0x00000751u, ImmutableString("imageAtomicAnd(01O10D00E").mangledNameHash());
- ASSERT_EQ(0x00000613u, ImmutableString("imageAtomicAnd(01P10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000693u, ImmutableString("imageAtomicAnd(01N10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000752u, ImmutableString("imageAtomicAnd(01O10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000614u, ImmutableString("imageAtomicAnd(01P10D00E").mangledNameHash());
ASSERT_EQ(0x000004dbu, ImmutableString("imageAtomicAnd(01W10D00E").mangledNameHash());
- ASSERT_EQ(0x00000699u, ImmutableString("imageAtomicAnd(01X10D00E").mangledNameHash());
- ASSERT_EQ(0x00000599u, ImmutableString("imageAtomicAnd(01Y10D00E").mangledNameHash());
- ASSERT_EQ(0x0000061au, ImmutableString("imageAtomicAnd(01Q10D00D00E").mangledNameHash());
+ ASSERT_EQ(0x0000069au, ImmutableString("imageAtomicAnd(01X10D00E").mangledNameHash());
+ ASSERT_EQ(0x0000059au, ImmutableString("imageAtomicAnd(01Y10D00E").mangledNameHash());
+ ASSERT_EQ(0x0000061bu, ImmutableString("imageAtomicAnd(01Q10D00D00E").mangledNameHash());
ASSERT_EQ(0x000004a5u, ImmutableString("imageAtomicAnd(01R10D00D00E").mangledNameHash());
ASSERT_EQ(0x00000467u, ImmutableString("imageAtomicAnd(01S10D00D00E").mangledNameHash());
ASSERT_EQ(0x00000194u, ImmutableString("imageAtomicAnd(01T20D00D00E").mangledNameHash());
ASSERT_EQ(0x000001c3u, ImmutableString("imageAtomicAnd(01U20D00D00E").mangledNameHash());
ASSERT_EQ(0x00000062u, ImmutableString("imageAtomicAnd(01V20D00D00E").mangledNameHash());
- ASSERT_EQ(0x00000828u, ImmutableString("imageAtomicAnd(00y10D00D").mangledNameHash());
- ASSERT_EQ(0x000007d1u, ImmutableString("imageAtomicAnd(00z10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000829u, ImmutableString("imageAtomicAnd(00y10D00D").mangledNameHash());
+ ASSERT_EQ(0x000007d2u, ImmutableString("imageAtomicAnd(00z10D00D").mangledNameHash());
ASSERT_EQ(0x00000030u, ImmutableString("imageAtomicAnd(01A10D00D").mangledNameHash());
- ASSERT_EQ(0x000005c0u, ImmutableString("imageAtomicAnd(01B20D00D").mangledNameHash());
+ ASSERT_EQ(0x000005c1u, ImmutableString("imageAtomicAnd(01B20D00D").mangledNameHash());
ASSERT_EQ(0x0000006du, ImmutableString("imageAtomicAnd(01C20D00D").mangledNameHash());
- ASSERT_EQ(0x000006b3u, ImmutableString("imageAtomicAnd(01D20D00D").mangledNameHash());
- ASSERT_EQ(0x0000077eu, ImmutableString("imageAtomicAnd(01H20D00D").mangledNameHash());
+ ASSERT_EQ(0x000006b4u, ImmutableString("imageAtomicAnd(01D20D00D").mangledNameHash());
+ ASSERT_EQ(0x0000077fu, ImmutableString("imageAtomicAnd(01H20D00D").mangledNameHash());
ASSERT_EQ(0x00000271u, ImmutableString("imageAtomicAnd(01I20D00D").mangledNameHash());
ASSERT_EQ(0x00000122u, ImmutableString("imageAtomicAnd(01J20D00D").mangledNameHash());
ASSERT_EQ(0x00000015u, ImmutableString("imageAtomicAnd(01f00D00D").mangledNameHash());
@@ -1676,20 +1676,20 @@
ASSERT_EQ(0x00000398u, ImmutableString("imageAtomicAnd(01h00D00D").mangledNameHash());
ASSERT_EQ(0x0000049au, ImmutableString("imageAtomicAnd(01E20D00D").mangledNameHash());
ASSERT_EQ(0x00000337u, ImmutableString("imageAtomicAnd(01F20D00D").mangledNameHash());
- ASSERT_EQ(0x00000806u, ImmutableString("imageAtomicAnd(01G20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000807u, ImmutableString("imageAtomicAnd(01G20D00D").mangledNameHash());
ASSERT_EQ(0x0000003bu, ImmutableString("imageAtomicAnd(01Z20D00D").mangledNameHash());
- ASSERT_EQ(0x00000796u, ImmutableString("imageAtomicAnd(01a20D00D").mangledNameHash());
- ASSERT_EQ(0x00000740u, ImmutableString("imageAtomicAnd(01b20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000797u, ImmutableString("imageAtomicAnd(01a20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000741u, ImmutableString("imageAtomicAnd(01b20D00D").mangledNameHash());
ASSERT_EQ(0x000004b0u, ImmutableString("imageAtomicAnd(01K00D00D").mangledNameHash());
ASSERT_EQ(0x0000025au, ImmutableString("imageAtomicAnd(01L00D00D").mangledNameHash());
ASSERT_EQ(0x00000215u, ImmutableString("imageAtomicAnd(01M00D00D").mangledNameHash());
ASSERT_EQ(0x00000562u, ImmutableString("imageAtomicAnd(01N10D00D").mangledNameHash());
ASSERT_EQ(0x000000a7u, ImmutableString("imageAtomicAnd(01O10D00D").mangledNameHash());
- ASSERT_EQ(0x00000614u, ImmutableString("imageAtomicAnd(01P10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000615u, ImmutableString("imageAtomicAnd(01P10D00D").mangledNameHash());
ASSERT_EQ(0x000004dau, ImmutableString("imageAtomicAnd(01W10D00D").mangledNameHash());
- ASSERT_EQ(0x0000069bu, ImmutableString("imageAtomicAnd(01X10D00D").mangledNameHash());
- ASSERT_EQ(0x00000598u, ImmutableString("imageAtomicAnd(01Y10D00D").mangledNameHash());
- ASSERT_EQ(0x0000061bu, ImmutableString("imageAtomicAnd(01Q10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000069cu, ImmutableString("imageAtomicAnd(01X10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000599u, ImmutableString("imageAtomicAnd(01Y10D00D").mangledNameHash());
+ ASSERT_EQ(0x0000061cu, ImmutableString("imageAtomicAnd(01Q10D00D00D").mangledNameHash());
ASSERT_EQ(0x000000c8u, ImmutableString("imageAtomicAnd(01R10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000468u, ImmutableString("imageAtomicAnd(01S10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000195u, ImmutableString("imageAtomicAnd(01T20D00D00D").mangledNameHash());
@@ -1701,32 +1701,32 @@
ASSERT_EQ(0x000003a6u, ImmutableString("imageAtomicOr(01B20D00E").mangledNameHash());
ASSERT_EQ(0x0000030bu, ImmutableString("imageAtomicOr(01C20D00E").mangledNameHash());
ASSERT_EQ(0x000004f6u, ImmutableString("imageAtomicOr(01D20D00E").mangledNameHash());
- ASSERT_EQ(0x0000084eu, ImmutableString("imageAtomicOr(01H20D00E").mangledNameHash());
+ ASSERT_EQ(0x0000084fu, ImmutableString("imageAtomicOr(01H20D00E").mangledNameHash());
ASSERT_EQ(0x0000044du, ImmutableString("imageAtomicOr(01I20D00E").mangledNameHash());
ASSERT_EQ(0x0000050cu, ImmutableString("imageAtomicOr(01J20D00E").mangledNameHash());
ASSERT_EQ(0x00000261u, ImmutableString("imageAtomicOr(01f00D00E").mangledNameHash());
ASSERT_EQ(0x00000546u, ImmutableString("imageAtomicOr(01g00D00E").mangledNameHash());
- ASSERT_EQ(0x0000057bu, ImmutableString("imageAtomicOr(01h00D00E").mangledNameHash());
+ ASSERT_EQ(0x0000057cu, ImmutableString("imageAtomicOr(01h00D00E").mangledNameHash());
ASSERT_EQ(0x000000b4u, ImmutableString("imageAtomicOr(01E20D00E").mangledNameHash());
ASSERT_EQ(0x000002e4u, ImmutableString("imageAtomicOr(01F20D00E").mangledNameHash());
ASSERT_EQ(0x000002a7u, ImmutableString("imageAtomicOr(01G20D00E").mangledNameHash());
- ASSERT_EQ(0x00000626u, ImmutableString("imageAtomicOr(01Z20D00E").mangledNameHash());
- ASSERT_EQ(0x0000058au, ImmutableString("imageAtomicOr(01a20D00E").mangledNameHash());
- ASSERT_EQ(0x00000836u, ImmutableString("imageAtomicOr(01b20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000627u, ImmutableString("imageAtomicOr(01Z20D00E").mangledNameHash());
+ ASSERT_EQ(0x0000058bu, ImmutableString("imageAtomicOr(01a20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000837u, ImmutableString("imageAtomicOr(01b20D00E").mangledNameHash());
ASSERT_EQ(0x000004a2u, ImmutableString("imageAtomicOr(01K00D00E").mangledNameHash());
ASSERT_EQ(0x0000012bu, ImmutableString("imageAtomicOr(01L00D00E").mangledNameHash());
ASSERT_EQ(0x000003efu, ImmutableString("imageAtomicOr(01M00D00E").mangledNameHash());
ASSERT_EQ(0x0000004au, ImmutableString("imageAtomicOr(01N10D00E").mangledNameHash());
- ASSERT_EQ(0x000005d3u, ImmutableString("imageAtomicOr(01O10D00E").mangledNameHash());
+ ASSERT_EQ(0x000005d4u, ImmutableString("imageAtomicOr(01O10D00E").mangledNameHash());
ASSERT_EQ(0x000000eeu, ImmutableString("imageAtomicOr(01P10D00E").mangledNameHash());
ASSERT_EQ(0x00000366u, ImmutableString("imageAtomicOr(01W10D00E").mangledNameHash());
- ASSERT_EQ(0x0000066cu, ImmutableString("imageAtomicOr(01X10D00E").mangledNameHash());
+ ASSERT_EQ(0x0000066du, ImmutableString("imageAtomicOr(01X10D00E").mangledNameHash());
ASSERT_EQ(0x00000199u, ImmutableString("imageAtomicOr(01Y10D00E").mangledNameHash());
ASSERT_EQ(0x00000037u, ImmutableString("imageAtomicOr(01Q10D00D00E").mangledNameHash());
ASSERT_EQ(0x000000c4u, ImmutableString("imageAtomicOr(01R10D00D00E").mangledNameHash());
- ASSERT_EQ(0x00000849u, ImmutableString("imageAtomicOr(01S10D00D00E").mangledNameHash());
+ ASSERT_EQ(0x0000084au, ImmutableString("imageAtomicOr(01S10D00D00E").mangledNameHash());
ASSERT_EQ(0x0000037au, ImmutableString("imageAtomicOr(01T20D00D00E").mangledNameHash());
- ASSERT_EQ(0x000006bau, ImmutableString("imageAtomicOr(01U20D00D00E").mangledNameHash());
+ ASSERT_EQ(0x000006bbu, ImmutableString("imageAtomicOr(01U20D00D00E").mangledNameHash());
ASSERT_EQ(0x00000460u, ImmutableString("imageAtomicOr(01V20D00D00E").mangledNameHash());
ASSERT_EQ(0x000002e2u, ImmutableString("imageAtomicOr(00y10D00D").mangledNameHash());
ASSERT_EQ(0x00000003u, ImmutableString("imageAtomicOr(00z10D00D").mangledNameHash());
@@ -1734,48 +1734,48 @@
ASSERT_EQ(0x000003a7u, ImmutableString("imageAtomicOr(01B20D00D").mangledNameHash());
ASSERT_EQ(0x0000030au, ImmutableString("imageAtomicOr(01C20D00D").mangledNameHash());
ASSERT_EQ(0x000004f8u, ImmutableString("imageAtomicOr(01D20D00D").mangledNameHash());
- ASSERT_EQ(0x0000084fu, ImmutableString("imageAtomicOr(01H20D00D").mangledNameHash());
- ASSERT_EQ(0x00000667u, ImmutableString("imageAtomicOr(01I20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000850u, ImmutableString("imageAtomicOr(01H20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000668u, ImmutableString("imageAtomicOr(01I20D00D").mangledNameHash());
ASSERT_EQ(0x0000050du, ImmutableString("imageAtomicOr(01J20D00D").mangledNameHash());
ASSERT_EQ(0x00000262u, ImmutableString("imageAtomicOr(01f00D00D").mangledNameHash());
ASSERT_EQ(0x00000545u, ImmutableString("imageAtomicOr(01g00D00D").mangledNameHash());
- ASSERT_EQ(0x0000057cu, ImmutableString("imageAtomicOr(01h00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000057du, ImmutableString("imageAtomicOr(01h00D00D").mangledNameHash());
ASSERT_EQ(0x000000b3u, ImmutableString("imageAtomicOr(01E20D00D").mangledNameHash());
ASSERT_EQ(0x000002e5u, ImmutableString("imageAtomicOr(01F20D00D").mangledNameHash());
ASSERT_EQ(0x000002a6u, ImmutableString("imageAtomicOr(01G20D00D").mangledNameHash());
- ASSERT_EQ(0x00000627u, ImmutableString("imageAtomicOr(01Z20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000628u, ImmutableString("imageAtomicOr(01Z20D00D").mangledNameHash());
ASSERT_EQ(0x00000263u, ImmutableString("imageAtomicOr(01a20D00D").mangledNameHash());
- ASSERT_EQ(0x00000837u, ImmutableString("imageAtomicOr(01b20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000838u, ImmutableString("imageAtomicOr(01b20D00D").mangledNameHash());
ASSERT_EQ(0x000004a1u, ImmutableString("imageAtomicOr(01K00D00D").mangledNameHash());
ASSERT_EQ(0x0000012cu, ImmutableString("imageAtomicOr(01L00D00D").mangledNameHash());
ASSERT_EQ(0x000000a2u, ImmutableString("imageAtomicOr(01M00D00D").mangledNameHash());
ASSERT_EQ(0x00000049u, ImmutableString("imageAtomicOr(01N10D00D").mangledNameHash());
- ASSERT_EQ(0x000005d4u, ImmutableString("imageAtomicOr(01O10D00D").mangledNameHash());
+ ASSERT_EQ(0x000005d5u, ImmutableString("imageAtomicOr(01O10D00D").mangledNameHash());
ASSERT_EQ(0x000000edu, ImmutableString("imageAtomicOr(01P10D00D").mangledNameHash());
ASSERT_EQ(0x00000367u, ImmutableString("imageAtomicOr(01W10D00D").mangledNameHash());
- ASSERT_EQ(0x0000066au, ImmutableString("imageAtomicOr(01X10D00D").mangledNameHash());
+ ASSERT_EQ(0x0000066bu, ImmutableString("imageAtomicOr(01X10D00D").mangledNameHash());
ASSERT_EQ(0x0000019au, ImmutableString("imageAtomicOr(01Y10D00D").mangledNameHash());
ASSERT_EQ(0x00000036u, ImmutableString("imageAtomicOr(01Q10D00D00D").mangledNameHash());
ASSERT_EQ(0x000000c5u, ImmutableString("imageAtomicOr(01R10D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000848u, ImmutableString("imageAtomicOr(01S10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000849u, ImmutableString("imageAtomicOr(01S10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000379u, ImmutableString("imageAtomicOr(01T20D00D00D").mangledNameHash());
- ASSERT_EQ(0x000006c3u, ImmutableString("imageAtomicOr(01U20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000006c4u, ImmutableString("imageAtomicOr(01U20D00D00D").mangledNameHash());
ASSERT_EQ(0x0000045fu, ImmutableString("imageAtomicOr(01V20D00D00D").mangledNameHash());
ASSERT_EQ(0x00000447u, ImmutableString("imageAtomicXor(00y10D00E").mangledNameHash());
ASSERT_EQ(0x0000007bu, ImmutableString("imageAtomicXor(00z10D00E").mangledNameHash());
ASSERT_EQ(0x00000421u, ImmutableString("imageAtomicXor(01A10D00E").mangledNameHash());
ASSERT_EQ(0x000000c2u, ImmutableString("imageAtomicXor(01B20D00E").mangledNameHash());
- ASSERT_EQ(0x00000596u, ImmutableString("imageAtomicXor(01C20D00E").mangledNameHash());
- ASSERT_EQ(0x0000063au, ImmutableString("imageAtomicXor(01D20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000597u, ImmutableString("imageAtomicXor(01C20D00E").mangledNameHash());
+ ASSERT_EQ(0x0000063bu, ImmutableString("imageAtomicXor(01D20D00E").mangledNameHash());
ASSERT_EQ(0x000000acu, ImmutableString("imageAtomicXor(01H20D00E").mangledNameHash());
ASSERT_EQ(0x00000203u, ImmutableString("imageAtomicXor(01I20D00E").mangledNameHash());
- ASSERT_EQ(0x000007eau, ImmutableString("imageAtomicXor(01J20D00E").mangledNameHash());
- ASSERT_EQ(0x000005b0u, ImmutableString("imageAtomicXor(01f00D00E").mangledNameHash());
+ ASSERT_EQ(0x000007ebu, ImmutableString("imageAtomicXor(01J20D00E").mangledNameHash());
+ ASSERT_EQ(0x000005b1u, ImmutableString("imageAtomicXor(01f00D00E").mangledNameHash());
ASSERT_EQ(0x0000030cu, ImmutableString("imageAtomicXor(01g00D00E").mangledNameHash());
ASSERT_EQ(0x00000251u, ImmutableString("imageAtomicXor(01h00D00E").mangledNameHash());
- ASSERT_EQ(0x00000855u, ImmutableString("imageAtomicXor(01E20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000856u, ImmutableString("imageAtomicXor(01E20D00E").mangledNameHash());
ASSERT_EQ(0x00000142u, ImmutableString("imageAtomicXor(01F20D00E").mangledNameHash());
- ASSERT_EQ(0x00000757u, ImmutableString("imageAtomicXor(01G20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000758u, ImmutableString("imageAtomicXor(01G20D00E").mangledNameHash());
ASSERT_EQ(0x000002a1u, ImmutableString("imageAtomicXor(01Z20D00E").mangledNameHash());
ASSERT_EQ(0x00000085u, ImmutableString("imageAtomicXor(01a20D00E").mangledNameHash());
ASSERT_EQ(0x000001c6u, ImmutableString("imageAtomicXor(01b20D00E").mangledNameHash());
@@ -1783,8 +1783,8 @@
ASSERT_EQ(0x000001a5u, ImmutableString("imageAtomicXor(01L00D00E").mangledNameHash());
ASSERT_EQ(0x0000055eu, ImmutableString("imageAtomicXor(01M00D00E").mangledNameHash());
ASSERT_EQ(0x000000efu, ImmutableString("imageAtomicXor(01N10D00E").mangledNameHash());
- ASSERT_EQ(0x000007c7u, ImmutableString("imageAtomicXor(01O10D00E").mangledNameHash());
- ASSERT_EQ(0x00000666u, ImmutableString("imageAtomicXor(01P10D00E").mangledNameHash());
+ ASSERT_EQ(0x000007c8u, ImmutableString("imageAtomicXor(01O10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000667u, ImmutableString("imageAtomicXor(01P10D00E").mangledNameHash());
ASSERT_EQ(0x00000425u, ImmutableString("imageAtomicXor(01W10D00E").mangledNameHash());
ASSERT_EQ(0x0000052fu, ImmutableString("imageAtomicXor(01X10D00E").mangledNameHash());
ASSERT_EQ(0x00000068u, ImmutableString("imageAtomicXor(01Y10D00E").mangledNameHash());
@@ -1798,25 +1798,25 @@
ASSERT_EQ(0x00000435u, ImmutableString("imageAtomicXor(00z10D00D").mangledNameHash());
ASSERT_EQ(0x00000420u, ImmutableString("imageAtomicXor(01A10D00D").mangledNameHash());
ASSERT_EQ(0x000000c1u, ImmutableString("imageAtomicXor(01B20D00D").mangledNameHash());
- ASSERT_EQ(0x00000816u, ImmutableString("imageAtomicXor(01C20D00D").mangledNameHash());
- ASSERT_EQ(0x00000639u, ImmutableString("imageAtomicXor(01D20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000817u, ImmutableString("imageAtomicXor(01C20D00D").mangledNameHash());
+ ASSERT_EQ(0x0000063au, ImmutableString("imageAtomicXor(01D20D00D").mangledNameHash());
ASSERT_EQ(0x000000abu, ImmutableString("imageAtomicXor(01H20D00D").mangledNameHash());
ASSERT_EQ(0x00000204u, ImmutableString("imageAtomicXor(01I20D00D").mangledNameHash());
- ASSERT_EQ(0x000007e9u, ImmutableString("imageAtomicXor(01J20D00D").mangledNameHash());
- ASSERT_EQ(0x000005afu, ImmutableString("imageAtomicXor(01f00D00D").mangledNameHash());
+ ASSERT_EQ(0x000007eau, ImmutableString("imageAtomicXor(01J20D00D").mangledNameHash());
+ ASSERT_EQ(0x000005b0u, ImmutableString("imageAtomicXor(01f00D00D").mangledNameHash());
ASSERT_EQ(0x00000315u, ImmutableString("imageAtomicXor(01g00D00D").mangledNameHash());
ASSERT_EQ(0x00000250u, ImmutableString("imageAtomicXor(01h00D00D").mangledNameHash());
- ASSERT_EQ(0x00000856u, ImmutableString("imageAtomicXor(01E20D00D").mangledNameHash());
- ASSERT_EQ(0x00000788u, ImmutableString("imageAtomicXor(01F20D00D").mangledNameHash());
- ASSERT_EQ(0x00000758u, ImmutableString("imageAtomicXor(01G20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000857u, ImmutableString("imageAtomicXor(01E20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000789u, ImmutableString("imageAtomicXor(01F20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000759u, ImmutableString("imageAtomicXor(01G20D00D").mangledNameHash());
ASSERT_EQ(0x000002a0u, ImmutableString("imageAtomicXor(01Z20D00D").mangledNameHash());
ASSERT_EQ(0x00000086u, ImmutableString("imageAtomicXor(01a20D00D").mangledNameHash());
ASSERT_EQ(0x00000238u, ImmutableString("imageAtomicXor(01b20D00D").mangledNameHash());
- ASSERT_EQ(0x000006bcu, ImmutableString("imageAtomicXor(01K00D00D").mangledNameHash());
+ ASSERT_EQ(0x000006bdu, ImmutableString("imageAtomicXor(01K00D00D").mangledNameHash());
ASSERT_EQ(0x00000326u, ImmutableString("imageAtomicXor(01L00D00D").mangledNameHash());
ASSERT_EQ(0x0000055fu, ImmutableString("imageAtomicXor(01M00D00D").mangledNameHash());
ASSERT_EQ(0x000000f0u, ImmutableString("imageAtomicXor(01N10D00D").mangledNameHash());
- ASSERT_EQ(0x000007c6u, ImmutableString("imageAtomicXor(01O10D00D").mangledNameHash());
+ ASSERT_EQ(0x000007c7u, ImmutableString("imageAtomicXor(01O10D00D").mangledNameHash());
ASSERT_EQ(0x0000028au, ImmutableString("imageAtomicXor(01P10D00D").mangledNameHash());
ASSERT_EQ(0x00000424u, ImmutableString("imageAtomicXor(01W10D00D").mangledNameHash());
ASSERT_EQ(0x00000530u, ImmutableString("imageAtomicXor(01X10D00D").mangledNameHash());
@@ -1831,9 +1831,9 @@
ASSERT_EQ(0x00000513u, ImmutableString("imageAtomicExchange(00z10D00E").mangledNameHash());
ASSERT_EQ(0x00000236u, ImmutableString("imageAtomicExchange(01A10D00E").mangledNameHash());
ASSERT_EQ(0x00000492u, ImmutableString("imageAtomicExchange(01B20D00E").mangledNameHash());
- ASSERT_EQ(0x000007abu, ImmutableString("imageAtomicExchange(01C20D00E").mangledNameHash());
+ ASSERT_EQ(0x000007acu, ImmutableString("imageAtomicExchange(01C20D00E").mangledNameHash());
ASSERT_EQ(0x0000037cu, ImmutableString("imageAtomicExchange(01D20D00E").mangledNameHash());
- ASSERT_EQ(0x0000065fu, ImmutableString("imageAtomicExchange(01H20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000660u, ImmutableString("imageAtomicExchange(01H20D00E").mangledNameHash());
ASSERT_EQ(0x0000046du, ImmutableString("imageAtomicExchange(01I20D00E").mangledNameHash());
ASSERT_EQ(0x000003ecu, ImmutableString("imageAtomicExchange(01J20D00E").mangledNameHash());
ASSERT_EQ(0x00000131u, ImmutableString("imageAtomicExchange(01f00D00E").mangledNameHash());
@@ -1841,102 +1841,102 @@
ASSERT_EQ(0x00000504u, ImmutableString("imageAtomicExchange(01h00D00E").mangledNameHash());
ASSERT_EQ(0x0000035au, ImmutableString("imageAtomicExchange(01E20D00E").mangledNameHash());
ASSERT_EQ(0x000001cau, ImmutableString("imageAtomicExchange(01F20D00E").mangledNameHash());
- ASSERT_EQ(0x00000604u, ImmutableString("imageAtomicExchange(01G20D00E").mangledNameHash());
+ ASSERT_EQ(0x00000605u, ImmutableString("imageAtomicExchange(01G20D00E").mangledNameHash());
ASSERT_EQ(0x0000012fu, ImmutableString("imageAtomicExchange(01Z20D00E").mangledNameHash());
- ASSERT_EQ(0x0000076eu, ImmutableString("imageAtomicExchange(01a20D00E").mangledNameHash());
+ ASSERT_EQ(0x0000076fu, ImmutableString("imageAtomicExchange(01a20D00E").mangledNameHash());
ASSERT_EQ(0x0000004bu, ImmutableString("imageAtomicExchange(01b20D00E").mangledNameHash());
ASSERT_EQ(0x00000517u, ImmutableString("imageAtomicExchange(01K00D00E").mangledNameHash());
- ASSERT_EQ(0x000005ceu, ImmutableString("imageAtomicExchange(01L00D00E").mangledNameHash());
+ ASSERT_EQ(0x000005cfu, ImmutableString("imageAtomicExchange(01L00D00E").mangledNameHash());
ASSERT_EQ(0x000001ccu, ImmutableString("imageAtomicExchange(01M00D00E").mangledNameHash());
ASSERT_EQ(0x0000023eu, ImmutableString("imageAtomicExchange(01N10D00E").mangledNameHash());
- ASSERT_EQ(0x00000637u, ImmutableString("imageAtomicExchange(01O10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000638u, ImmutableString("imageAtomicExchange(01O10D00E").mangledNameHash());
ASSERT_EQ(0x00000465u, ImmutableString("imageAtomicExchange(01P10D00E").mangledNameHash());
ASSERT_EQ(0x00000170u, ImmutableString("imageAtomicExchange(01W10D00E").mangledNameHash());
ASSERT_EQ(0x000002b5u, ImmutableString("imageAtomicExchange(01X10D00E").mangledNameHash());
- ASSERT_EQ(0x00000634u, ImmutableString("imageAtomicExchange(01Y10D00E").mangledNameHash());
+ ASSERT_EQ(0x00000635u, ImmutableString("imageAtomicExchange(01Y10D00E").mangledNameHash());
ASSERT_EQ(0x0000041au, ImmutableString("imageAtomicExchange(01Q10D00D00E").mangledNameHash());
ASSERT_EQ(0x00000444u, ImmutableString("imageAtomicExchange(01R10D00D00E").mangledNameHash());
ASSERT_EQ(0x00000181u, ImmutableString("imageAtomicExchange(01S10D00D00E").mangledNameHash());
ASSERT_EQ(0x000002c5u, ImmutableString("imageAtomicExchange(01T20D00D00E").mangledNameHash());
- ASSERT_EQ(0x000005dcu, ImmutableString("imageAtomicExchange(01U20D00D00E").mangledNameHash());
+ ASSERT_EQ(0x000005ddu, ImmutableString("imageAtomicExchange(01U20D00D00E").mangledNameHash());
ASSERT_EQ(0x0000021bu, ImmutableString("imageAtomicExchange(01V20D00D00E").mangledNameHash());
ASSERT_EQ(0x0000021fu, ImmutableString("imageAtomicExchange(00y10D00D").mangledNameHash());
ASSERT_EQ(0x00000514u, ImmutableString("imageAtomicExchange(00z10D00D").mangledNameHash());
ASSERT_EQ(0x00000237u, ImmutableString("imageAtomicExchange(01A10D00D").mangledNameHash());
ASSERT_EQ(0x00000493u, ImmutableString("imageAtomicExchange(01B20D00D").mangledNameHash());
- ASSERT_EQ(0x000007aau, ImmutableString("imageAtomicExchange(01C20D00D").mangledNameHash());
+ ASSERT_EQ(0x000007abu, ImmutableString("imageAtomicExchange(01C20D00D").mangledNameHash());
ASSERT_EQ(0x000004a8u, ImmutableString("imageAtomicExchange(01D20D00D").mangledNameHash());
- ASSERT_EQ(0x00000660u, ImmutableString("imageAtomicExchange(01H20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000661u, ImmutableString("imageAtomicExchange(01H20D00D").mangledNameHash());
ASSERT_EQ(0x0000046cu, ImmutableString("imageAtomicExchange(01I20D00D").mangledNameHash());
ASSERT_EQ(0x000003edu, ImmutableString("imageAtomicExchange(01J20D00D").mangledNameHash());
ASSERT_EQ(0x00000132u, ImmutableString("imageAtomicExchange(01f00D00D").mangledNameHash());
- ASSERT_EQ(0x0000068eu, ImmutableString("imageAtomicExchange(01g00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000068fu, ImmutableString("imageAtomicExchange(01g00D00D").mangledNameHash());
ASSERT_EQ(0x00000505u, ImmutableString("imageAtomicExchange(01h00D00D").mangledNameHash());
ASSERT_EQ(0x00000359u, ImmutableString("imageAtomicExchange(01E20D00D").mangledNameHash());
ASSERT_EQ(0x000000b8u, ImmutableString("imageAtomicExchange(01F20D00D").mangledNameHash());
- ASSERT_EQ(0x00000603u, ImmutableString("imageAtomicExchange(01G20D00D").mangledNameHash());
+ ASSERT_EQ(0x00000604u, ImmutableString("imageAtomicExchange(01G20D00D").mangledNameHash());
ASSERT_EQ(0x00000130u, ImmutableString("imageAtomicExchange(01Z20D00D").mangledNameHash());
- ASSERT_EQ(0x0000076du, ImmutableString("imageAtomicExchange(01a20D00D").mangledNameHash());
+ ASSERT_EQ(0x0000076eu, ImmutableString("imageAtomicExchange(01a20D00D").mangledNameHash());
ASSERT_EQ(0x0000004cu, ImmutableString("imageAtomicExchange(01b20D00D").mangledNameHash());
ASSERT_EQ(0x000004b4u, ImmutableString("imageAtomicExchange(01K00D00D").mangledNameHash());
ASSERT_EQ(0x000004d9u, ImmutableString("imageAtomicExchange(01L00D00D").mangledNameHash());
ASSERT_EQ(0x000001cbu, ImmutableString("imageAtomicExchange(01M00D00D").mangledNameHash());
ASSERT_EQ(0x00000069u, ImmutableString("imageAtomicExchange(01N10D00D").mangledNameHash());
- ASSERT_EQ(0x00000781u, ImmutableString("imageAtomicExchange(01O10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000782u, ImmutableString("imageAtomicExchange(01O10D00D").mangledNameHash());
ASSERT_EQ(0x00000461u, ImmutableString("imageAtomicExchange(01P10D00D").mangledNameHash());
ASSERT_EQ(0x00000171u, ImmutableString("imageAtomicExchange(01W10D00D").mangledNameHash());
ASSERT_EQ(0x000002b4u, ImmutableString("imageAtomicExchange(01X10D00D").mangledNameHash());
- ASSERT_EQ(0x00000635u, ImmutableString("imageAtomicExchange(01Y10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000636u, ImmutableString("imageAtomicExchange(01Y10D00D").mangledNameHash());
ASSERT_EQ(0x00000419u, ImmutableString("imageAtomicExchange(01Q10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000445u, ImmutableString("imageAtomicExchange(01R10D00D00D").mangledNameHash());
ASSERT_EQ(0x0000027fu, ImmutableString("imageAtomicExchange(01S10D00D00D").mangledNameHash());
ASSERT_EQ(0x000002c4u, ImmutableString("imageAtomicExchange(01T20D00D00D").mangledNameHash());
- ASSERT_EQ(0x000005e0u, ImmutableString("imageAtomicExchange(01U20D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000005e1u, ImmutableString("imageAtomicExchange(01U20D00D00D").mangledNameHash());
ASSERT_EQ(0x000003eau, ImmutableString("imageAtomicExchange(01V20D00D00D").mangledNameHash());
ASSERT_EQ(0x0000021eu, ImmutableString("imageAtomicExchange(00y10D00B").mangledNameHash());
ASSERT_EQ(0x00000512u, ImmutableString("imageAtomicExchange(00z10D00B").mangledNameHash());
ASSERT_EQ(0x00000234u, ImmutableString("imageAtomicExchange(01A10D00B").mangledNameHash());
ASSERT_EQ(0x00000268u, ImmutableString("imageAtomicExchange(01B20D00B").mangledNameHash());
- ASSERT_EQ(0x000007aeu, ImmutableString("imageAtomicExchange(01C20D00B").mangledNameHash());
+ ASSERT_EQ(0x000007afu, ImmutableString("imageAtomicExchange(01C20D00B").mangledNameHash());
ASSERT_EQ(0x0000037eu, ImmutableString("imageAtomicExchange(01D20D00B").mangledNameHash());
- ASSERT_EQ(0x0000065cu, ImmutableString("imageAtomicExchange(01H20D00B").mangledNameHash());
+ ASSERT_EQ(0x0000065du, ImmutableString("imageAtomicExchange(01H20D00B").mangledNameHash());
ASSERT_EQ(0x0000046eu, ImmutableString("imageAtomicExchange(01I20D00B").mangledNameHash());
ASSERT_EQ(0x000003ebu, ImmutableString("imageAtomicExchange(01J20D00B").mangledNameHash());
- ASSERT_EQ(0x00000731u, ImmutableString("imageAtomicExchange(01f00D00B").mangledNameHash());
- ASSERT_EQ(0x0000080eu, ImmutableString("imageAtomicExchange(01g00D00B").mangledNameHash());
+ ASSERT_EQ(0x00000732u, ImmutableString("imageAtomicExchange(01f00D00B").mangledNameHash());
+ ASSERT_EQ(0x0000080fu, ImmutableString("imageAtomicExchange(01g00D00B").mangledNameHash());
ASSERT_EQ(0x00000507u, ImmutableString("imageAtomicExchange(01h00D00B").mangledNameHash());
ASSERT_EQ(0x00000201u, ImmutableString("imageAtomicExchange(01E20D00B").mangledNameHash());
ASSERT_EQ(0x000000bbu, ImmutableString("imageAtomicExchange(01F20D00B").mangledNameHash());
- ASSERT_EQ(0x00000601u, ImmutableString("imageAtomicExchange(01G20D00B").mangledNameHash());
+ ASSERT_EQ(0x00000602u, ImmutableString("imageAtomicExchange(01G20D00B").mangledNameHash());
ASSERT_EQ(0x0000012eu, ImmutableString("imageAtomicExchange(01Z20D00B").mangledNameHash());
- ASSERT_EQ(0x0000076fu, ImmutableString("imageAtomicExchange(01a20D00B").mangledNameHash());
+ ASSERT_EQ(0x00000770u, ImmutableString("imageAtomicExchange(01a20D00B").mangledNameHash());
ASSERT_EQ(0x0000015bu, ImmutableString("imageAtomicExchange(01b20D00B").mangledNameHash());
ASSERT_EQ(0x00000518u, ImmutableString("imageAtomicExchange(01K00D00B").mangledNameHash());
ASSERT_EQ(0x000003bbu, ImmutableString("imageAtomicExchange(01L00D00B").mangledNameHash());
ASSERT_EQ(0x000001c9u, ImmutableString("imageAtomicExchange(01M00D00B").mangledNameHash());
ASSERT_EQ(0x0000024au, ImmutableString("imageAtomicExchange(01N10D00B").mangledNameHash());
- ASSERT_EQ(0x00000636u, ImmutableString("imageAtomicExchange(01O10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000637u, ImmutableString("imageAtomicExchange(01O10D00B").mangledNameHash());
ASSERT_EQ(0x00000295u, ImmutableString("imageAtomicExchange(01P10D00B").mangledNameHash());
ASSERT_EQ(0x0000016fu, ImmutableString("imageAtomicExchange(01W10D00B").mangledNameHash());
- ASSERT_EQ(0x0000075au, ImmutableString("imageAtomicExchange(01X10D00B").mangledNameHash());
- ASSERT_EQ(0x00000632u, ImmutableString("imageAtomicExchange(01Y10D00B").mangledNameHash());
+ ASSERT_EQ(0x0000075bu, ImmutableString("imageAtomicExchange(01X10D00B").mangledNameHash());
+ ASSERT_EQ(0x00000633u, ImmutableString("imageAtomicExchange(01Y10D00B").mangledNameHash());
ASSERT_EQ(0x0000041bu, ImmutableString("imageAtomicExchange(01Q10D00D00B").mangledNameHash());
ASSERT_EQ(0x0000001fu, ImmutableString("imageAtomicExchange(01R10D00D00B").mangledNameHash());
ASSERT_EQ(0x000001d8u, ImmutableString("imageAtomicExchange(01S10D00D00B").mangledNameHash());
ASSERT_EQ(0x0000054du, ImmutableString("imageAtomicExchange(01T20D00D00B").mangledNameHash());
- ASSERT_EQ(0x000005d9u, ImmutableString("imageAtomicExchange(01U20D00D00B").mangledNameHash());
+ ASSERT_EQ(0x000005dau, ImmutableString("imageAtomicExchange(01U20D00D00B").mangledNameHash());
ASSERT_EQ(0x0000021cu, ImmutableString("imageAtomicExchange(01V20D00D00B").mangledNameHash());
ASSERT_EQ(0x00000279u, ImmutableString("imageAtomicCompSwap(00y10D00E00E").mangledNameHash());
ASSERT_EQ(0x0000040du, ImmutableString("imageAtomicCompSwap(00z10D00E00E").mangledNameHash());
ASSERT_EQ(0x00000404u, ImmutableString("imageAtomicCompSwap(01A10D00E00E").mangledNameHash());
ASSERT_EQ(0x0000020au, ImmutableString("imageAtomicCompSwap(01B20D00E00E").mangledNameHash());
- ASSERT_EQ(0x00000782u, ImmutableString("imageAtomicCompSwap(01C20D00E00E").mangledNameHash());
- ASSERT_EQ(0x000006f9u, ImmutableString("imageAtomicCompSwap(01D20D00E00E").mangledNameHash());
- ASSERT_EQ(0x0000065eu, ImmutableString("imageAtomicCompSwap(01H20D00E00E").mangledNameHash());
+ ASSERT_EQ(0x00000783u, ImmutableString("imageAtomicCompSwap(01C20D00E00E").mangledNameHash());
+ ASSERT_EQ(0x000006fau, ImmutableString("imageAtomicCompSwap(01D20D00E00E").mangledNameHash());
+ ASSERT_EQ(0x0000065fu, ImmutableString("imageAtomicCompSwap(01H20D00E00E").mangledNameHash());
ASSERT_EQ(0x000000d8u, ImmutableString("imageAtomicCompSwap(01I20D00E00E").mangledNameHash());
ASSERT_EQ(0x0000005au, ImmutableString("imageAtomicCompSwap(01J20D00E00E").mangledNameHash());
ASSERT_EQ(0x0000049eu, ImmutableString("imageAtomicCompSwap(01f00D00E00E").mangledNameHash());
- ASSERT_EQ(0x000007c4u, ImmutableString("imageAtomicCompSwap(01g00D00E00E").mangledNameHash());
+ ASSERT_EQ(0x000007c5u, ImmutableString("imageAtomicCompSwap(01g00D00E00E").mangledNameHash());
ASSERT_EQ(0x0000020eu, ImmutableString("imageAtomicCompSwap(01h00D00E00E").mangledNameHash());
ASSERT_EQ(0x00000134u, ImmutableString("imageAtomicCompSwap(01E20D00E00E").mangledNameHash());
ASSERT_EQ(0x000001cdu, ImmutableString("imageAtomicCompSwap(01F20D00E00E").mangledNameHash());
@@ -1945,15 +1945,15 @@
ASSERT_EQ(0x00000028u, ImmutableString("imageAtomicCompSwap(01a20D00E00E").mangledNameHash());
ASSERT_EQ(0x0000033fu, ImmutableString("imageAtomicCompSwap(01b20D00E00E").mangledNameHash());
ASSERT_EQ(0x0000045eu, ImmutableString("imageAtomicCompSwap(01K00D00E00E").mangledNameHash());
- ASSERT_EQ(0x0000059cu, ImmutableString("imageAtomicCompSwap(01L00D00E00E").mangledNameHash());
+ ASSERT_EQ(0x0000059du, ImmutableString("imageAtomicCompSwap(01L00D00E00E").mangledNameHash());
ASSERT_EQ(0x000002c0u, ImmutableString("imageAtomicCompSwap(01M00D00E00E").mangledNameHash());
- ASSERT_EQ(0x00000584u, ImmutableString("imageAtomicCompSwap(01N10D00E00E").mangledNameHash());
+ ASSERT_EQ(0x00000585u, ImmutableString("imageAtomicCompSwap(01N10D00E00E").mangledNameHash());
ASSERT_EQ(0x00000140u, ImmutableString("imageAtomicCompSwap(01O10D00E00E").mangledNameHash());
ASSERT_EQ(0x0000008cu, ImmutableString("imageAtomicCompSwap(01P10D00E00E").mangledNameHash());
ASSERT_EQ(0x000001e5u, ImmutableString("imageAtomicCompSwap(01W10D00E00E").mangledNameHash());
ASSERT_EQ(0x00000112u, ImmutableString("imageAtomicCompSwap(01X10D00E00E").mangledNameHash());
ASSERT_EQ(0x0000021du, ImmutableString("imageAtomicCompSwap(01Y10D00E00E").mangledNameHash());
- ASSERT_EQ(0x000007c5u,
+ ASSERT_EQ(0x000007c6u,
ImmutableString("imageAtomicCompSwap(01Q10D00D00E00E").mangledNameHash());
ASSERT_EQ(0x00000390u,
ImmutableString("imageAtomicCompSwap(01R10D00D00E00E").mangledNameHash());
@@ -1961,12 +1961,12 @@
ImmutableString("imageAtomicCompSwap(01S10D00D00E00E").mangledNameHash());
ASSERT_EQ(0x00000298u,
ImmutableString("imageAtomicCompSwap(01T20D00D00E00E").mangledNameHash());
- ASSERT_EQ(0x00000677u,
+ ASSERT_EQ(0x00000678u,
ImmutableString("imageAtomicCompSwap(01U20D00D00E00E").mangledNameHash());
- ASSERT_EQ(0x00000746u,
+ ASSERT_EQ(0x00000747u,
ImmutableString("imageAtomicCompSwap(01V20D00D00E00E").mangledNameHash());
ASSERT_EQ(0x000004b5u, ImmutableString("imageAtomicCompSwap(00y10D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000771u, ImmutableString("imageAtomicCompSwap(00z10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000772u, ImmutableString("imageAtomicCompSwap(00z10D00D00D").mangledNameHash());
ASSERT_EQ(0x0000006fu, ImmutableString("imageAtomicCompSwap(01A10D00D00D").mangledNameHash());
ASSERT_EQ(0x00000342u, ImmutableString("imageAtomicCompSwap(01B20D00D00D").mangledNameHash());
ASSERT_EQ(0x00000422u, ImmutableString("imageAtomicCompSwap(01C20D00D00D").mangledNameHash());
@@ -1975,7 +1975,7 @@
ASSERT_EQ(0x000002beu, ImmutableString("imageAtomicCompSwap(01I20D00D00D").mangledNameHash());
ASSERT_EQ(0x000003a9u, ImmutableString("imageAtomicCompSwap(01J20D00D00D").mangledNameHash());
ASSERT_EQ(0x0000000cu, ImmutableString("imageAtomicCompSwap(01f00D00D00D").mangledNameHash());
- ASSERT_EQ(0x000006a9u, ImmutableString("imageAtomicCompSwap(01g00D00D00D").mangledNameHash());
+ ASSERT_EQ(0x000006aau, ImmutableString("imageAtomicCompSwap(01g00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000303u, ImmutableString("imageAtomicCompSwap(01h00D00D00D").mangledNameHash());
ASSERT_EQ(0x0000000au, ImmutableString("imageAtomicCompSwap(01E20D00D00D").mangledNameHash());
ASSERT_EQ(0x000002f1u, ImmutableString("imageAtomicCompSwap(01F20D00D00D").mangledNameHash());
@@ -1984,19 +1984,19 @@
ASSERT_EQ(0x0000056au, ImmutableString("imageAtomicCompSwap(01a20D00D00D").mangledNameHash());
ASSERT_EQ(0x0000002fu, ImmutableString("imageAtomicCompSwap(01b20D00D00D").mangledNameHash());
ASSERT_EQ(0x00000126u, ImmutableString("imageAtomicCompSwap(01K00D00D00D").mangledNameHash());
- ASSERT_EQ(0x0000061cu, ImmutableString("imageAtomicCompSwap(01L00D00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000061du, ImmutableString("imageAtomicCompSwap(01L00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000193u, ImmutableString("imageAtomicCompSwap(01M00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000211u, ImmutableString("imageAtomicCompSwap(01N10D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000641u, ImmutableString("imageAtomicCompSwap(01O10D00D00D").mangledNameHash());
- ASSERT_EQ(0x0000068au, ImmutableString("imageAtomicCompSwap(01P10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000642u, ImmutableString("imageAtomicCompSwap(01O10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000068bu, ImmutableString("imageAtomicCompSwap(01P10D00D00D").mangledNameHash());
ASSERT_EQ(0x0000030eu, ImmutableString("imageAtomicCompSwap(01W10D00D00D").mangledNameHash());
- ASSERT_EQ(0x00000842u, ImmutableString("imageAtomicCompSwap(01X10D00D00D").mangledNameHash());
- ASSERT_EQ(0x0000066bu, ImmutableString("imageAtomicCompSwap(01Y10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x00000843u, ImmutableString("imageAtomicCompSwap(01X10D00D00D").mangledNameHash());
+ ASSERT_EQ(0x0000066cu, ImmutableString("imageAtomicCompSwap(01Y10D00D00D").mangledNameHash());
ASSERT_EQ(0x000000a8u,
ImmutableString("imageAtomicCompSwap(01Q10D00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000029u,
ImmutableString("imageAtomicCompSwap(01R10D00D00D00D").mangledNameHash());
- ASSERT_EQ(0x0000062cu,
+ ASSERT_EQ(0x0000062du,
ImmutableString("imageAtomicCompSwap(01S10D00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000356u,
ImmutableString("imageAtomicCompSwap(01T20D00D00D00D").mangledNameHash());
@@ -2006,47 +2006,47 @@
ImmutableString("imageAtomicCompSwap(01V20D00D00D00D").mangledNameHash());
ASSERT_EQ(0x00000370u, ImmutableString("imageLoad(00y10D").mangledNameHash());
ASSERT_EQ(0x00000343u, ImmutableString("imageLoad(00z10D").mangledNameHash());
- ASSERT_EQ(0x00000659u, ImmutableString("imageLoad(01A10D").mangledNameHash());
+ ASSERT_EQ(0x0000065au, ImmutableString("imageLoad(01A10D").mangledNameHash());
ASSERT_EQ(0x000001b9u, ImmutableString("imageLoad(01B20D").mangledNameHash());
- ASSERT_EQ(0x0000070au, ImmutableString("imageLoad(01C20D").mangledNameHash());
+ ASSERT_EQ(0x0000070bu, ImmutableString("imageLoad(01C20D").mangledNameHash());
ASSERT_EQ(0x000001e9u, ImmutableString("imageLoad(01D20D").mangledNameHash());
- ASSERT_EQ(0x000007fau, ImmutableString("imageLoad(01E20D").mangledNameHash());
+ ASSERT_EQ(0x000007fbu, ImmutableString("imageLoad(01E20D").mangledNameHash());
ASSERT_EQ(0x0000002du, ImmutableString("imageLoad(01F20D").mangledNameHash());
- ASSERT_EQ(0x00000779u, ImmutableString("imageLoad(01G20D").mangledNameHash());
+ ASSERT_EQ(0x0000077au, ImmutableString("imageLoad(01G20D").mangledNameHash());
ASSERT_EQ(0x000002adu, ImmutableString("imageLoad(01H20D").mangledNameHash());
ASSERT_EQ(0x00000008u, ImmutableString("imageLoad(01I20D").mangledNameHash());
ASSERT_EQ(0x0000055au, ImmutableString("imageLoad(01J20D").mangledNameHash());
ASSERT_EQ(0x0000051fu, ImmutableString("imageLoad(01f00D").mangledNameHash());
ASSERT_EQ(0x00000007u, ImmutableString("imageLoad(01g00D").mangledNameHash());
ASSERT_EQ(0x00000133u, ImmutableString("imageLoad(01h00D").mangledNameHash());
- ASSERT_EQ(0x000007d9u, ImmutableString("imageLoad(01Z20D").mangledNameHash());
+ ASSERT_EQ(0x000007dau, ImmutableString("imageLoad(01Z20D").mangledNameHash());
ASSERT_EQ(0x00000430u, ImmutableString("imageLoad(01a20D").mangledNameHash());
- ASSERT_EQ(0x000006c9u, ImmutableString("imageLoad(01b20D").mangledNameHash());
+ ASSERT_EQ(0x000006cau, ImmutableString("imageLoad(01b20D").mangledNameHash());
ASSERT_EQ(0x00000119u, ImmutableString("imageLoad(01K00D").mangledNameHash());
ASSERT_EQ(0x00000462u, ImmutableString("imageLoad(01L00D").mangledNameHash());
- ASSERT_EQ(0x0000059bu, ImmutableString("imageLoad(01M00D").mangledNameHash());
- ASSERT_EQ(0x00000624u, ImmutableString("imageLoad(01N10D").mangledNameHash());
+ ASSERT_EQ(0x0000059cu, ImmutableString("imageLoad(01M00D").mangledNameHash());
+ ASSERT_EQ(0x00000625u, ImmutableString("imageLoad(01N10D").mangledNameHash());
ASSERT_EQ(0x0000028eu, ImmutableString("imageLoad(01O10D").mangledNameHash());
- ASSERT_EQ(0x000006b0u, ImmutableString("imageLoad(01P10D").mangledNameHash());
+ ASSERT_EQ(0x000006b1u, ImmutableString("imageLoad(01P10D").mangledNameHash());
ASSERT_EQ(0x00000159u, ImmutableString("imageLoad(01W10D").mangledNameHash());
ASSERT_EQ(0x0000016du, ImmutableString("imageLoad(01X10D").mangledNameHash());
- ASSERT_EQ(0x00000605u, ImmutableString("imageLoad(01Y10D").mangledNameHash());
- ASSERT_EQ(0x000005a7u, ImmutableString("imageLoad(01Q10D00D").mangledNameHash());
- ASSERT_EQ(0x000006e7u, ImmutableString("imageLoad(01R10D00D").mangledNameHash());
+ ASSERT_EQ(0x00000606u, ImmutableString("imageLoad(01Y10D").mangledNameHash());
+ ASSERT_EQ(0x000005a8u, ImmutableString("imageLoad(01Q10D00D").mangledNameHash());
+ ASSERT_EQ(0x000006e8u, ImmutableString("imageLoad(01R10D00D").mangledNameHash());
ASSERT_EQ(0x000002efu, ImmutableString("imageLoad(01S10D00D").mangledNameHash());
ASSERT_EQ(0x00000310u, ImmutableString("imageLoad(01T20D00D").mangledNameHash());
- ASSERT_EQ(0x000006ccu, ImmutableString("imageLoad(01U20D00D").mangledNameHash());
+ ASSERT_EQ(0x000006cdu, ImmutableString("imageLoad(01U20D00D").mangledNameHash());
ASSERT_EQ(0x000000b6u, ImmutableString("imageLoad(01V20D00D").mangledNameHash());
- ASSERT_EQ(0x00000694u, ImmutableString("imageStore(00y10D30B").mangledNameHash());
+ ASSERT_EQ(0x00000695u, ImmutableString("imageStore(00y10D30B").mangledNameHash());
ASSERT_EQ(0x0000009bu, ImmutableString("imageStore(00z10D30D").mangledNameHash());
ASSERT_EQ(0x000000aau, ImmutableString("imageStore(01A10D30E").mangledNameHash());
- ASSERT_EQ(0x000006afu, ImmutableString("imageStore(01B20D30B").mangledNameHash());
+ ASSERT_EQ(0x000006b0u, ImmutableString("imageStore(01B20D30B").mangledNameHash());
ASSERT_EQ(0x000001b1u, ImmutableString("imageStore(01C20D30D").mangledNameHash());
ASSERT_EQ(0x0000044bu, ImmutableString("imageStore(01D20D30E").mangledNameHash());
ASSERT_EQ(0x000003dbu, ImmutableString("imageStore(01E20D30B").mangledNameHash());
ASSERT_EQ(0x000004fbu, ImmutableString("imageStore(01F20D30D").mangledNameHash());
ASSERT_EQ(0x000004b9u, ImmutableString("imageStore(01G20D30E").mangledNameHash());
- ASSERT_EQ(0x000005e2u, ImmutableString("imageStore(01H20D30B").mangledNameHash());
+ ASSERT_EQ(0x000005e3u, ImmutableString("imageStore(01H20D30B").mangledNameHash());
ASSERT_EQ(0x00000573u, ImmutableString("imageStore(01I20D30D").mangledNameHash());
ASSERT_EQ(0x000000a0u, ImmutableString("imageStore(01J20D30E").mangledNameHash());
ASSERT_EQ(0x000000d7u, ImmutableString("imageStore(01f00D30B").mangledNameHash());
@@ -2054,75 +2054,75 @@
ASSERT_EQ(0x0000032fu, ImmutableString("imageStore(01h00D30E").mangledNameHash());
ASSERT_EQ(0x00000531u, ImmutableString("imageStore(01Z20D30B").mangledNameHash());
ASSERT_EQ(0x000002acu, ImmutableString("imageStore(01a20D30D").mangledNameHash());
- ASSERT_EQ(0x0000072au, ImmutableString("imageStore(01b20D30E").mangledNameHash());
+ ASSERT_EQ(0x0000072bu, ImmutableString("imageStore(01b20D30E").mangledNameHash());
ASSERT_EQ(0x0000002bu, ImmutableString("imageStore(01K00D30B").mangledNameHash());
ASSERT_EQ(0x000000bcu, ImmutableString("imageStore(01L00D30D").mangledNameHash());
ASSERT_EQ(0x00000176u, ImmutableString("imageStore(01M00D30E").mangledNameHash());
ASSERT_EQ(0x00000197u, ImmutableString("imageStore(01N10D30B").mangledNameHash());
- ASSERT_EQ(0x000007a2u, ImmutableString("imageStore(01O10D30D").mangledNameHash());
+ ASSERT_EQ(0x000007a3u, ImmutableString("imageStore(01O10D30D").mangledNameHash());
ASSERT_EQ(0x000004f2u, ImmutableString("imageStore(01P10D30E").mangledNameHash());
ASSERT_EQ(0x000001f1u, ImmutableString("imageStore(01W10D30B").mangledNameHash());
ASSERT_EQ(0x000004bfu, ImmutableString("imageStore(01X10D30D").mangledNameHash());
ASSERT_EQ(0x00000178u, ImmutableString("imageStore(01Y10D30E").mangledNameHash());
- ASSERT_EQ(0x00000663u, ImmutableString("imageStore(01Q10D00D30B").mangledNameHash());
- ASSERT_EQ(0x000005fcu, ImmutableString("imageStore(01R10D00D30D").mangledNameHash());
+ ASSERT_EQ(0x00000664u, ImmutableString("imageStore(01Q10D00D30B").mangledNameHash());
+ ASSERT_EQ(0x000005fdu, ImmutableString("imageStore(01R10D00D30D").mangledNameHash());
ASSERT_EQ(0x00000417u, ImmutableString("imageStore(01S10D00D30E").mangledNameHash());
- ASSERT_EQ(0x000007ebu, ImmutableString("imageStore(01T20D00D30B").mangledNameHash());
+ ASSERT_EQ(0x000007ecu, ImmutableString("imageStore(01T20D00D30B").mangledNameHash());
ASSERT_EQ(0x00000120u, ImmutableString("imageStore(01U20D00D30D").mangledNameHash());
ASSERT_EQ(0x00000297u, ImmutableString("imageStore(01V20D00D30E").mangledNameHash());
- ASSERT_EQ(0x0000059au, ImmutableString("noise1(00B").mangledNameHash());
- ASSERT_EQ(0x0000064fu, ImmutableString("noise1(10B").mangledNameHash());
- ASSERT_EQ(0x000006e1u, ImmutableString("noise1(20B").mangledNameHash());
+ ASSERT_EQ(0x0000059bu, ImmutableString("noise1(00B").mangledNameHash());
+ ASSERT_EQ(0x00000650u, ImmutableString("noise1(10B").mangledNameHash());
+ ASSERT_EQ(0x000006e2u, ImmutableString("noise1(20B").mangledNameHash());
ASSERT_EQ(0x00000320u, ImmutableString("noise1(30B").mangledNameHash());
ASSERT_EQ(0x000002c6u, ImmutableString("noise2(00B").mangledNameHash());
ASSERT_EQ(0x000000ccu, ImmutableString("noise2(10B").mangledNameHash());
ASSERT_EQ(0x00000091u, ImmutableString("noise2(20B").mangledNameHash());
- ASSERT_EQ(0x000006b9u, ImmutableString("noise2(30B").mangledNameHash());
+ ASSERT_EQ(0x000006bau, ImmutableString("noise2(30B").mangledNameHash());
ASSERT_EQ(0x000002a5u, ImmutableString("noise3(00B").mangledNameHash());
ASSERT_EQ(0x00000335u, ImmutableString("noise3(10B").mangledNameHash());
- ASSERT_EQ(0x000006d8u, ImmutableString("noise3(20B").mangledNameHash());
+ ASSERT_EQ(0x000006d9u, ImmutableString("noise3(20B").mangledNameHash());
ASSERT_EQ(0x000001f6u, ImmutableString("noise3(30B").mangledNameHash());
ASSERT_EQ(0x0000032au, ImmutableString("noise4(00B").mangledNameHash());
ASSERT_EQ(0x0000029du, ImmutableString("noise4(10B").mangledNameHash());
ASSERT_EQ(0x00000478u, ImmutableString("noise4(20B").mangledNameHash());
ASSERT_EQ(0x000003d8u, ImmutableString("noise4(30B").mangledNameHash());
ASSERT_EQ(0x000001dcu, ImmutableString("memoryBarrier(").mangledNameHash());
- ASSERT_EQ(0x0000069fu, ImmutableString("memoryBarrierAtomicCounter(").mangledNameHash());
+ ASSERT_EQ(0x000006a0u, ImmutableString("memoryBarrierAtomicCounter(").mangledNameHash());
ASSERT_EQ(0x000000f9u, ImmutableString("memoryBarrierBuffer(").mangledNameHash());
- ASSERT_EQ(0x0000082du, ImmutableString("memoryBarrierImage(").mangledNameHash());
- ASSERT_EQ(0x000006ffu, ImmutableString("barrier(").mangledNameHash());
- ASSERT_EQ(0x0000081bu, ImmutableString("memoryBarrierShared(").mangledNameHash());
+ ASSERT_EQ(0x0000082eu, ImmutableString("memoryBarrierImage(").mangledNameHash());
+ ASSERT_EQ(0x00000700u, ImmutableString("barrier(").mangledNameHash());
+ ASSERT_EQ(0x0000081cu, ImmutableString("memoryBarrierShared(").mangledNameHash());
ASSERT_EQ(0x00000048u, ImmutableString("groupMemoryBarrier(").mangledNameHash());
ASSERT_EQ(0x00000216u, ImmutableString("EmitVertex(").mangledNameHash());
ASSERT_EQ(0x0000038cu, ImmutableString("EndPrimitive(").mangledNameHash());
ASSERT_EQ(0x000003a8u, ImmutableString("EmitStreamVertex(00D").mangledNameHash());
ASSERT_EQ(0x00000287u, ImmutableString("EndStreamPrimitive(00D").mangledNameHash());
- ASSERT_EQ(0x000006ceu, ImmutableString("subpassLoad(01i").mangledNameHash());
- ASSERT_EQ(0x000006eau, ImmutableString("subpassLoad(01j").mangledNameHash());
- ASSERT_EQ(0x000006cfu, ImmutableString("subpassLoad(01k").mangledNameHash());
+ ASSERT_EQ(0x000006cfu, ImmutableString("subpassLoad(01i").mangledNameHash());
+ ASSERT_EQ(0x000006ebu, ImmutableString("subpassLoad(01j").mangledNameHash());
+ ASSERT_EQ(0x000006d0u, ImmutableString("subpassLoad(01k").mangledNameHash());
ASSERT_EQ(0x00000196u, ImmutableString("subpassLoad(01l00D").mangledNameHash());
ASSERT_EQ(0x00000299u, ImmutableString("subpassLoad(01m00D").mangledNameHash());
ASSERT_EQ(0x00000564u, ImmutableString("subpassLoad(01n00D").mangledNameHash());
- ASSERT_EQ(0x000006f7u, ImmutableString("anyInvocation(00F").mangledNameHash());
- ASSERT_EQ(0x000005a4u, ImmutableString("allInvocations(00F").mangledNameHash());
+ ASSERT_EQ(0x000006f8u, ImmutableString("anyInvocation(00F").mangledNameHash());
+ ASSERT_EQ(0x000005a5u, ImmutableString("allInvocations(00F").mangledNameHash());
ASSERT_EQ(0x000004b8u, ImmutableString("allInvocationsEqual(00F").mangledNameHash());
- ASSERT_EQ(0x0000064cu, ImmutableString("gl_DepthRangeParameters").mangledNameHash());
+ ASSERT_EQ(0x0000064du, ImmutableString("gl_DepthRangeParameters").mangledNameHash());
ASSERT_EQ(0x00000124u, ImmutableString("gl_DepthRange").mangledNameHash());
- ASSERT_EQ(0x00000809u, ImmutableString("gl_MaxVertexAttribs").mangledNameHash());
+ ASSERT_EQ(0x0000080au, ImmutableString("gl_MaxVertexAttribs").mangledNameHash());
ASSERT_EQ(0x000002ccu, ImmutableString("gl_MaxVertexUniformVectors").mangledNameHash());
ASSERT_EQ(0x000001adu, ImmutableString("gl_MaxVertexTextureImageUnits").mangledNameHash());
ASSERT_EQ(0x00000519u, ImmutableString("gl_MaxCombinedTextureImageUnits").mangledNameHash());
ASSERT_EQ(0x000004e6u, ImmutableString("gl_MaxTextureImageUnits").mangledNameHash());
- ASSERT_EQ(0x000005edu, ImmutableString("gl_MaxFragmentUniformVectors").mangledNameHash());
- ASSERT_EQ(0x00000621u, ImmutableString("gl_MaxVaryingVectors").mangledNameHash());
+ ASSERT_EQ(0x000005eeu, ImmutableString("gl_MaxFragmentUniformVectors").mangledNameHash());
+ ASSERT_EQ(0x00000622u, ImmutableString("gl_MaxVaryingVectors").mangledNameHash());
ASSERT_EQ(0x000004cau, ImmutableString("gl_MaxDrawBuffers").mangledNameHash());
ASSERT_EQ(0x0000017au, ImmutableString("gl_MaxDualSourceDrawBuffersEXT").mangledNameHash());
- ASSERT_EQ(0x00000800u, ImmutableString("gl_MaxVertexOutputVectors").mangledNameHash());
+ ASSERT_EQ(0x00000801u, ImmutableString("gl_MaxVertexOutputVectors").mangledNameHash());
ASSERT_EQ(0x0000005du, ImmutableString("gl_MaxFragmentInputVectors").mangledNameHash());
ASSERT_EQ(0x00000528u, ImmutableString("gl_MinProgramTexelOffset").mangledNameHash());
- ASSERT_EQ(0x00000791u, ImmutableString("gl_MaxProgramTexelOffset").mangledNameHash());
+ ASSERT_EQ(0x00000792u, ImmutableString("gl_MaxProgramTexelOffset").mangledNameHash());
ASSERT_EQ(0x00000488u, ImmutableString("gl_MaxImageUnits").mangledNameHash());
- ASSERT_EQ(0x000007e2u, ImmutableString("gl_MaxVertexImageUniforms").mangledNameHash());
+ ASSERT_EQ(0x000007e3u, ImmutableString("gl_MaxVertexImageUniforms").mangledNameHash());
ASSERT_EQ(0x00000149u, ImmutableString("gl_MaxFragmentImageUniforms").mangledNameHash());
ASSERT_EQ(0x00000232u, ImmutableString("gl_MaxComputeImageUniforms").mangledNameHash());
ASSERT_EQ(0x00000543u, ImmutableString("gl_MaxCombinedImageUniforms").mangledNameHash());
@@ -2130,18 +2130,18 @@
ImmutableString("gl_MaxCombinedShaderOutputResources").mangledNameHash());
ASSERT_EQ(0x00000276u, ImmutableString("gl_MaxComputeWorkGroupCount").mangledNameHash());
ASSERT_EQ(0x000004acu, ImmutableString("gl_MaxComputeWorkGroupSize").mangledNameHash());
- ASSERT_EQ(0x00000698u, ImmutableString("gl_MaxComputeUniformComponents").mangledNameHash());
+ ASSERT_EQ(0x00000699u, ImmutableString("gl_MaxComputeUniformComponents").mangledNameHash());
ASSERT_EQ(0x000000a3u, ImmutableString("gl_MaxComputeTextureImageUnits").mangledNameHash());
- ASSERT_EQ(0x00000649u, ImmutableString("gl_MaxComputeAtomicCounters").mangledNameHash());
+ ASSERT_EQ(0x0000064au, ImmutableString("gl_MaxComputeAtomicCounters").mangledNameHash());
ASSERT_EQ(0x000001b7u, ImmutableString("gl_MaxComputeAtomicCounterBuffers").mangledNameHash());
ASSERT_EQ(0x00000169u, ImmutableString("gl_MaxVertexAtomicCounters").mangledNameHash());
ASSERT_EQ(0x00000186u, ImmutableString("gl_MaxFragmentAtomicCounters").mangledNameHash());
- ASSERT_EQ(0x00000616u, ImmutableString("gl_MaxCombinedAtomicCounters").mangledNameHash());
+ ASSERT_EQ(0x00000617u, ImmutableString("gl_MaxCombinedAtomicCounters").mangledNameHash());
ASSERT_EQ(0x00000022u, ImmutableString("gl_MaxAtomicCounterBindings").mangledNameHash());
ASSERT_EQ(0x0000026au, ImmutableString("gl_MaxVertexAtomicCounterBuffers").mangledNameHash());
ASSERT_EQ(0x00000328u, ImmutableString("gl_MaxFragmentAtomicCounterBuffers").mangledNameHash());
- ASSERT_EQ(0x000007e4u, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").mangledNameHash());
- ASSERT_EQ(0x000007d3u, ImmutableString("gl_MaxAtomicCounterBufferSize").mangledNameHash());
+ ASSERT_EQ(0x000007e5u, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").mangledNameHash());
+ ASSERT_EQ(0x000007d4u, ImmutableString("gl_MaxAtomicCounterBufferSize").mangledNameHash());
ASSERT_EQ(0x0000046fu, ImmutableString("gl_MaxGeometryInputComponents").mangledNameHash());
ASSERT_EQ(0x0000031fu, ImmutableString("gl_MaxGeometryOutputComponents").mangledNameHash());
ASSERT_EQ(0x00000106u, ImmutableString("gl_MaxGeometryImageUniforms").mangledNameHash());
@@ -2150,38 +2150,39 @@
ASSERT_EQ(0x0000052au,
ImmutableString("gl_MaxGeometryTotalOutputComponents").mangledNameHash());
ASSERT_EQ(0x000002d1u, ImmutableString("gl_MaxGeometryUniformComponents").mangledNameHash());
- ASSERT_EQ(0x0000076bu, ImmutableString("gl_MaxGeometryAtomicCounters").mangledNameHash());
- ASSERT_EQ(0x0000072fu, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").mangledNameHash());
+ ASSERT_EQ(0x0000076cu, ImmutableString("gl_MaxGeometryAtomicCounters").mangledNameHash());
+ ASSERT_EQ(0x00000730u, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").mangledNameHash());
ASSERT_EQ(0x00000494u, ImmutableString("gl_FragCoord").mangledNameHash());
ASSERT_EQ(0x000001b0u, ImmutableString("gl_FrontFacing").mangledNameHash());
ASSERT_EQ(0x000004f5u, ImmutableString("gl_PointCoord").mangledNameHash());
ASSERT_EQ(0x0000047eu, ImmutableString("gl_FragColor").mangledNameHash());
- ASSERT_EQ(0x000007fcu, ImmutableString("gl_FragData").mangledNameHash());
+ ASSERT_EQ(0x000007fdu, ImmutableString("gl_FragData").mangledNameHash());
ASSERT_EQ(0x000003d3u, ImmutableString("gl_FragDepth").mangledNameHash());
+ ASSERT_EQ(0x00000577u, ImmutableString("gl_HelperInvocation").mangledNameHash());
ASSERT_EQ(0x000001c1u, ImmutableString("gl_SecondaryFragColorEXT").mangledNameHash());
- ASSERT_EQ(0x0000074eu, ImmutableString("gl_SecondaryFragDataEXT").mangledNameHash());
+ ASSERT_EQ(0x0000074fu, ImmutableString("gl_SecondaryFragDataEXT").mangledNameHash());
ASSERT_EQ(0x000002f5u, ImmutableString("gl_FragDepthEXT").mangledNameHash());
- ASSERT_EQ(0x00000719u, ImmutableString("gl_LastFragData").mangledNameHash());
- ASSERT_EQ(0x00000673u, ImmutableString("gl_LastFragColor").mangledNameHash());
+ ASSERT_EQ(0x0000071au, ImmutableString("gl_LastFragData").mangledNameHash());
+ ASSERT_EQ(0x00000674u, ImmutableString("gl_LastFragColor").mangledNameHash());
ASSERT_EQ(0x000001bdu, ImmutableString("gl_LastFragColorARM").mangledNameHash());
- ASSERT_EQ(0x00000669u, ImmutableString("gl_PrimitiveID").mangledNameHash());
- ASSERT_EQ(0x0000066eu, ImmutableString("gl_Layer").mangledNameHash());
+ ASSERT_EQ(0x0000066au, ImmutableString("gl_PrimitiveID").mangledNameHash());
+ ASSERT_EQ(0x0000066fu, ImmutableString("gl_Layer").mangledNameHash());
ASSERT_EQ(0x000003e6u, ImmutableString("gl_Position").mangledNameHash());
ASSERT_EQ(0x00000209u, ImmutableString("gl_PointSize").mangledNameHash());
ASSERT_EQ(0x00000114u, ImmutableString("gl_InstanceID").mangledNameHash());
ASSERT_EQ(0x00000548u, ImmutableString("gl_VertexID").mangledNameHash());
ASSERT_EQ(0x0000043eu, ImmutableString("gl_DrawID").mangledNameHash());
- ASSERT_EQ(0x000007d6u, ImmutableString("gl_BaseVertex").mangledNameHash());
+ ASSERT_EQ(0x000007d7u, ImmutableString("gl_BaseVertex").mangledNameHash());
ASSERT_EQ(0x000001c4u, ImmutableString("gl_BaseInstance").mangledNameHash());
ASSERT_EQ(0x00000469u, ImmutableString("angle_BaseVertex").mangledNameHash());
ASSERT_EQ(0x000003e3u, ImmutableString("angle_BaseInstance").mangledNameHash());
- ASSERT_EQ(0x000005d2u, ImmutableString("gl_NumWorkGroups").mangledNameHash());
+ ASSERT_EQ(0x000005d3u, ImmutableString("gl_NumWorkGroups").mangledNameHash());
ASSERT_EQ(0x0000034bu, ImmutableString("gl_WorkGroupSize").mangledNameHash());
- ASSERT_EQ(0x00000764u, ImmutableString("gl_WorkGroupID").mangledNameHash());
- ASSERT_EQ(0x0000072cu, ImmutableString("gl_LocalInvocationID").mangledNameHash());
+ ASSERT_EQ(0x00000765u, ImmutableString("gl_WorkGroupID").mangledNameHash());
+ ASSERT_EQ(0x0000072du, ImmutableString("gl_LocalInvocationID").mangledNameHash());
ASSERT_EQ(0x00000547u, ImmutableString("gl_GlobalInvocationID").mangledNameHash());
- ASSERT_EQ(0x000007dfu, ImmutableString("gl_LocalInvocationIndex").mangledNameHash());
- ASSERT_EQ(0x000007bdu, ImmutableString("gl_PrimitiveIDIn").mangledNameHash());
+ ASSERT_EQ(0x000007e0u, ImmutableString("gl_LocalInvocationIndex").mangledNameHash());
+ ASSERT_EQ(0x000007beu, ImmutableString("gl_PrimitiveIDIn").mangledNameHash());
ASSERT_EQ(0x000000c7u, ImmutableString("gl_InvocationID").mangledNameHash());
ASSERT_EQ(0x00000348u, ImmutableString("gl_PerVertex").mangledNameHash());
ASSERT_EQ(0x00000329u, ImmutableString("gl_in").mangledNameHash());
diff --git a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/QualificationOrder_test.cpp b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/QualificationOrder_test.cpp
index 98f8a2d..eccd0a6 100644
--- a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/QualificationOrder_test.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/QualificationOrder_test.cpp
@@ -429,7 +429,7 @@
"}\n"
"void main()\n"
"{\n"
- " gl_FragColor = vec4(foo0(value));\n"
+ " gl_FragColor = vec4(foo0(value));\n"
"}\n";
if (compile(shaderString))
@@ -449,7 +449,7 @@
"}\n"
"void main()\n"
"{\n"
- " gl_FragColor = vec4(foo0(value));\n"
+ " gl_FragColor = vec4(foo0(value));\n"
"}\n";
if (compile(shaderString))
@@ -469,7 +469,7 @@
"}\n"
"void main()\n"
"{\n"
- " gl_FragColor = vec4(foo0(value));\n"
+ " gl_FragColor = vec4(foo0(value));\n"
"}\n";
if (compile(shaderString))
@@ -491,7 +491,7 @@
"out vec4 colorOUT;\n"
"void main()\n"
"{\n"
- " colorOUT = vec4(foo0(value));\n"
+ " colorOUT = vec4(foo0(value));\n"
"}\n";
if (compile(shaderString))
@@ -513,7 +513,7 @@
"out vec4 colorOUT;\n"
"void main()\n"
"{\n"
- " colorOUT = vec4(foo0(value));\n"
+ " colorOUT = vec4(foo0(value));\n"
"}\n";
if (compile(shaderString))
@@ -535,7 +535,7 @@
"out vec4 colorOUT;\n"
"void main()\n"
"{\n"
- " colorOUT = vec4(foo0(value));\n"
+ " colorOUT = vec4(foo0(value));\n"
"}\n";
if (compile(shaderString))
diff --git a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShaderValidation_test.cpp b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShaderValidation_test.cpp
index 5b72ef3..55879a2 100644
--- a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShaderValidation_test.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShaderValidation_test.cpp
@@ -1305,6 +1305,26 @@
}
}
+// Test that indexing a sampler array with a non-constant expression is forbidden, even if ANGLE is
+// able to constant fold the index expression. ESSL 3.00 section 4.1.7.1.
+TEST_F(FragmentShaderValidationTest, DynamicallyIndexedSampler)
+{
+ const std::string &shaderString =
+ "#version 300 es\n"
+ "precision mediump float;\n"
+ "uniform int a;\n"
+ "uniform sampler2D s[2];\n"
+ "out vec4 my_FragColor;\n"
+ "void main()\n"
+ "{\n"
+ " my_FragColor = texture(s[true ? 0 : a], vec2(0));\n"
+ "}\n";
+ if (compile(shaderString))
+ {
+ FAIL() << "Shader compilation succeeded, expecting failure:\n" << mInfoLog;
+ }
+}
+
// Test that a shader that uses a struct definition in place of a struct constructor does not
// compile. See GLSL ES 1.00 section 5.4.3.
TEST_F(FragmentShaderValidationTest, StructConstructorWithStructDefinition)
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/BUILD.gn b/Source/ThirdParty/ANGLE/src/tests/deqp_support/BUILD.gn
new file mode 100644
index 0000000..22a4e28
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/BUILD.gn
@@ -0,0 +1,382 @@
+# GENERATED FILE - DO NOT EDIT.
+# Generated by: gen_vk_gl_cts_build.py
+#
+# Copyright 2019 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.
+
+deqp_path = "../../../third_party/VK-GL-CTS/src"
+
+copy("vk_gl_cts_data_data_gles2_data") {
+ sources = [
+ "$deqp_path/data/gles2/data/brick.png",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_data_gles2_data_etc1") {
+ sources = [
+ "$deqp_path/data/gles2/data/etc1/photo_helsinki_113x89.pkm",
+ "$deqp_path/data/gles2/data/etc1/photo_helsinki_mip_0.pkm",
+ "$deqp_path/data/gles2/data/etc1/photo_helsinki_mip_1.pkm",
+ "$deqp_path/data/gles2/data/etc1/photo_helsinki_mip_2.pkm",
+ "$deqp_path/data/gles2/data/etc1/photo_helsinki_mip_3.pkm",
+ "$deqp_path/data/gles2/data/etc1/photo_helsinki_mip_4.pkm",
+ "$deqp_path/data/gles2/data/etc1/photo_helsinki_mip_5.pkm",
+ "$deqp_path/data/gles2/data/etc1/photo_helsinki_mip_6.pkm",
+ "$deqp_path/data/gles2/data/etc1/photo_helsinki_mip_7.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_61x61_neg_x.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_61x61_neg_y.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_61x61_neg_z.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_61x61_pos_x.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_61x61_pos_y.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_61x61_pos_z.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_x_mip_0.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_x_mip_1.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_x_mip_2.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_x_mip_3.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_x_mip_4.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_x_mip_5.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_x_mip_6.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_y_mip_0.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_y_mip_1.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_y_mip_2.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_y_mip_3.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_y_mip_4.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_y_mip_5.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_y_mip_6.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_z_mip_0.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_z_mip_1.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_z_mip_2.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_z_mip_3.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_z_mip_4.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_z_mip_5.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_neg_z_mip_6.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_x_mip_0.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_x_mip_1.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_x_mip_2.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_x_mip_3.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_x_mip_4.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_x_mip_5.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_x_mip_6.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_y_mip_0.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_y_mip_1.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_y_mip_2.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_y_mip_3.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_y_mip_4.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_y_mip_5.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_y_mip_6.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_z_mip_0.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_z_mip_1.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_z_mip_2.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_z_mip_3.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_z_mip_4.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_z_mip_5.pkm",
+ "$deqp_path/data/gles2/data/etc1/skybox_pos_z_mip_6.pkm",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_data_gles2_shaders") {
+ sources = [
+ "$deqp_path/data/gles2/shaders/conditionals.test",
+ "$deqp_path/data/gles2/shaders/constant_expressions.test",
+ "$deqp_path/data/gles2/shaders/constants.test",
+ "$deqp_path/data/gles2/shaders/conversions.test",
+ "$deqp_path/data/gles2/shaders/declarations.test",
+ "$deqp_path/data/gles2/shaders/fragdata.test",
+ "$deqp_path/data/gles2/shaders/functions.test",
+ "$deqp_path/data/gles2/shaders/invalid_constant_expressions.test",
+ "$deqp_path/data/gles2/shaders/invalid_implicit_conversions.test",
+ "$deqp_path/data/gles2/shaders/invalid_texture_functions.test",
+ "$deqp_path/data/gles2/shaders/keywords.test",
+ "$deqp_path/data/gles2/shaders/linkage.test",
+ "$deqp_path/data/gles2/shaders/loops.test",
+ "$deqp_path/data/gles2/shaders/misc.test",
+ "$deqp_path/data/gles2/shaders/preprocessor.test",
+ "$deqp_path/data/gles2/shaders/qualification_order.test",
+ "$deqp_path/data/gles2/shaders/reserved_operators.test",
+ "$deqp_path/data/gles2/shaders/scoping.test",
+ "$deqp_path/data/gles2/shaders/swizzles.test",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_data_gles3_data") {
+ sources = [
+ "$deqp_path/data/gles3/data/brick.png",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_data_gles3_data_etc1") {
+ sources = [
+ "$deqp_path/data/gles3/data/etc1/photo_helsinki_113x89.pkm",
+ "$deqp_path/data/gles3/data/etc1/photo_helsinki_mip_0.pkm",
+ "$deqp_path/data/gles3/data/etc1/photo_helsinki_mip_1.pkm",
+ "$deqp_path/data/gles3/data/etc1/photo_helsinki_mip_2.pkm",
+ "$deqp_path/data/gles3/data/etc1/photo_helsinki_mip_3.pkm",
+ "$deqp_path/data/gles3/data/etc1/photo_helsinki_mip_4.pkm",
+ "$deqp_path/data/gles3/data/etc1/photo_helsinki_mip_5.pkm",
+ "$deqp_path/data/gles3/data/etc1/photo_helsinki_mip_6.pkm",
+ "$deqp_path/data/gles3/data/etc1/photo_helsinki_mip_7.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_61x61_neg_x.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_61x61_neg_y.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_61x61_neg_z.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_61x61_pos_x.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_61x61_pos_y.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_61x61_pos_z.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_x_mip_0.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_x_mip_1.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_x_mip_2.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_x_mip_3.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_x_mip_4.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_x_mip_5.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_x_mip_6.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_y_mip_0.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_y_mip_1.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_y_mip_2.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_y_mip_3.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_y_mip_4.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_y_mip_5.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_y_mip_6.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_z_mip_0.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_z_mip_1.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_z_mip_2.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_z_mip_3.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_z_mip_4.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_z_mip_5.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_neg_z_mip_6.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_x_mip_0.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_x_mip_1.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_x_mip_2.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_x_mip_3.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_x_mip_4.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_x_mip_5.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_x_mip_6.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_y_mip_0.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_y_mip_1.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_y_mip_2.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_y_mip_3.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_y_mip_4.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_y_mip_5.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_y_mip_6.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_z_mip_0.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_z_mip_1.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_z_mip_2.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_z_mip_3.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_z_mip_4.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_z_mip_5.pkm",
+ "$deqp_path/data/gles3/data/etc1/skybox_pos_z_mip_6.pkm",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_data_gles3_shaders") {
+ sources = [
+ "$deqp_path/data/gles3/shaders/arrays.test",
+ "$deqp_path/data/gles3/shaders/conditionals.test",
+ "$deqp_path/data/gles3/shaders/constant_expressions.test",
+ "$deqp_path/data/gles3/shaders/constants.test",
+ "$deqp_path/data/gles3/shaders/conversions.test",
+ "$deqp_path/data/gles3/shaders/declarations.test",
+ "$deqp_path/data/gles3/shaders/fragdata.test",
+ "$deqp_path/data/gles3/shaders/functions.test",
+ "$deqp_path/data/gles3/shaders/indexing.test",
+ "$deqp_path/data/gles3/shaders/invalid_implicit_conversions.test",
+ "$deqp_path/data/gles3/shaders/invalid_texture_functions.test",
+ "$deqp_path/data/gles3/shaders/keywords.test",
+ "$deqp_path/data/gles3/shaders/large_constant_arrays.test",
+ "$deqp_path/data/gles3/shaders/linkage.test",
+ "$deqp_path/data/gles3/shaders/loops.test",
+ "$deqp_path/data/gles3/shaders/negative.test",
+ "$deqp_path/data/gles3/shaders/preprocessor.test",
+ "$deqp_path/data/gles3/shaders/qualification_order.test",
+ "$deqp_path/data/gles3/shaders/scoping.test",
+ "$deqp_path/data/gles3/shaders/switch.test",
+ "$deqp_path/data/gles3/shaders/swizzle_math_operations.test",
+ "$deqp_path/data/gles3/shaders/swizzles.test",
+ "$deqp_path/data/gles3/shaders/uniform_block.test",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_data_gles31_data_tessellation") {
+ sources = [
+ "$deqp_path/data/gles31/data/tessellation/barrier_ref.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/gl_position_ref.png",
+ "$deqp_path/data/gles31/data/tessellation/isolines_equal_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/isolines_equal_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/isolines_equal_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/isolines_fractional_even_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/isolines_fractional_even_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/isolines_fractional_even_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/isolines_fractional_odd_spacing_ref_0.png",
+ "$deqp_path/data/gles31/data/tessellation/isolines_fractional_odd_spacing_ref_1.png",
+ "$deqp_path/data/gles31/data/tessellation/isolines_fractional_odd_spacing_ref_2.png",
+ "$deqp_path/data/gles31/data/tessellation/patch_vertices_10_in_10_out_ref.png",
+ "$deqp_path/data/gles31/data/tessellation/patch_vertices_10_in_5_out_ref.png",
+ "$deqp_path/data/gles31/data/tessellation/patch_vertices_5_in_10_out_ref.png",
+ "$deqp_path/data/gles31/data/tessellation/primitive_id_tcs_ref.png",
+ "$deqp_path/data/gles31/data/tessellation/primitive_id_tes_ref.png",
+ "$deqp_path/data/gles31/data/tessellation/user_defined_io_isolines_ref.png",
+ "$deqp_path/data/gles31/data/tessellation/user_defined_io_quads_ref.png",
+ "$deqp_path/data/gles31/data/tessellation/user_defined_io_triangles_ref.png",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_data_gles31_shaders_es31") {
+ sources = [
+ "$deqp_path/data/gles31/shaders/es31/android_extension_pack.test",
+ "$deqp_path/data/gles31/shaders/es31/arrays.test",
+ "$deqp_path/data/gles31/shaders/es31/arrays_of_arrays.test",
+ "$deqp_path/data/gles31/shaders/es31/declarations.test",
+ "$deqp_path/data/gles31/shaders/es31/functions.test",
+ "$deqp_path/data/gles31/shaders/es31/implicit_conversions.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_geometry.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_geometry_uniform_types.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_geometry_varying_types.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_io_block.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_shader_storage_block.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_tessellation.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_tessellation_geometry.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_tessellation_geometry_varying_types.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_tessellation_uniform_types.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_tessellation_varying_types.test",
+ "$deqp_path/data/gles31/shaders/es31/linkage_uniform.test",
+ "$deqp_path/data/gles31/shaders/es31/separate_shader_validation.test",
+ "$deqp_path/data/gles31/shaders/es31/tessellation_negative_user_defined_io.test",
+ "$deqp_path/data/gles31/shaders/es31/uniform_block.test",
+ "$deqp_path/data/gles31/shaders/es31/uniform_location.test",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_data_gles31_shaders_es32") {
+ sources = [
+ "$deqp_path/data/gles31/shaders/es32/android_extension_pack.test",
+ "$deqp_path/data/gles31/shaders/es32/arrays.test",
+ "$deqp_path/data/gles31/shaders/es32/arrays_of_arrays.test",
+ "$deqp_path/data/gles31/shaders/es32/functions.test",
+ "$deqp_path/data/gles31/shaders/es32/implicit_conversions.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_geometry.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_geometry_uniform_types.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_geometry_varying_types.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_io_block.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_shader_storage_block.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_tessellation.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_tessellation_geometry.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_tessellation_geometry_varying_types.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_tessellation_uniform_types.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_tessellation_varying_types.test",
+ "$deqp_path/data/gles31/shaders/es32/linkage_uniform.test",
+ "$deqp_path/data/gles31/shaders/es32/separate_shader_validation.test",
+ "$deqp_path/data/gles31/shaders/es32/tessellation_negative_user_defined_io.test",
+ "$deqp_path/data/gles31/shaders/es32/uniform_block.test",
+ "$deqp_path/data/gles31/shaders/es32/uniform_location.test",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_external_graphicsfuzz_data_gles3_graphicsfuzz") {
+ sources = [
+ "$deqp_path/external/graphicsfuzz/data/gles3/graphicsfuzz/vertexShader.glsl",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/{{source_file_part}}",
+ ]
+}
+
+copy(
+ "vk_gl_cts_data_external_graphicsfuzz_data_gles3_graphicsfuzz_bubblesort_flag") {
+ sources = [
+ "$deqp_path/external/graphicsfuzz/data/gles3/graphicsfuzz/bubblesort_flag/recipient.frag",
+ "$deqp_path/external/graphicsfuzz/data/gles3/graphicsfuzz/bubblesort_flag/variant_1.frag",
+ "$deqp_path/external/graphicsfuzz/data/gles3/graphicsfuzz/bubblesort_flag/variant_2.frag",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/bubblesort_flag/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_external_graphicsfuzz_data_gles3_graphicsfuzz_synthetic") {
+ sources = [
+ "$deqp_path/external/graphicsfuzz/data/gles3/graphicsfuzz/synthetic/recipient.frag",
+ "$deqp_path/external/graphicsfuzz/data/gles3/graphicsfuzz/synthetic/variant_1.frag",
+ "$deqp_path/external/graphicsfuzz/data/gles3/graphicsfuzz/synthetic/variant_2.frag",
+ "$deqp_path/external/graphicsfuzz/data/gles3/graphicsfuzz/synthetic/variant_3.frag",
+ "$deqp_path/external/graphicsfuzz/data/gles3/graphicsfuzz/synthetic/variant_4.frag",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/{{source_file_part}}",
+ ]
+}
+
+copy("vk_gl_cts_data_external_openglcts_data_gles3") {
+ sources = [
+ "$deqp_path/external/openglcts/data/gles3/arrays.test",
+ "$deqp_path/external/openglcts/data/gles3/declarations.test",
+ "$deqp_path/external/openglcts/data/gles3/literal_parsing.test",
+ "$deqp_path/external/openglcts/data/gles3/name_hiding.test",
+ "$deqp_path/external/openglcts/data/gles3/preprocessor.test",
+ "$deqp_path/external/openglcts/data/gles3/switch.test",
+ ]
+ outputs = [
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/{{source_file_part}}",
+ ]
+}
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp
index e6e65ef..05db50b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp
@@ -58,9 +58,9 @@
}
const char *gCaseListSearchPaths[] = {
- "/../../sdcard/chromium_tests_root/third_party/angle/third_party/deqp/src",
- "/../../third_party/deqp/src",
- "/../../third_party/angle/third_party/deqp/src",
+ "/../../sdcard/chromium_tests_root/third_party/angle/third_party/VK-GL-CTS/src",
+ "/../../third_party/VK-GL-CTS/src",
+ "/../../third_party/angle/third_party/VK-GL-CTS/src",
};
const char *gTestExpectationsSearchPaths[] = {
@@ -268,6 +268,19 @@
GPUTestConfig testConfig = GPUTestConfig(api);
+#if !defined(ANGLE_PLATFORM_ANDROID)
+ // Note: These prints mess up parsing of test list when running on Android.
+ std::cout << "Using test config with:" << std::endl;
+ for (uint32_t condition : testConfig.getConditions())
+ {
+ const char *name = GetConditionName(condition);
+ if (name != nullptr)
+ {
+ std::cout << " " << name << std::endl;
+ }
+ }
+#endif
+
if (!mTestExpectationsParser.loadTestExpectationsFromFile(testConfig,
testExpectationsPath.value()))
{
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester_main.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester_main.cpp
index ea9f09b..6d7a8ed 100644
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester_main.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester_main.cpp
@@ -38,10 +38,10 @@
const char *kDataPaths[] = {
".",
"../../sdcard/chromium_tests_root",
- "../../sdcard/chromium_tests_root/third_party/angle/third_party/deqp/src",
- "../../third_party/angle/third_party/deqp/src",
- "../../third_party/deqp/src",
- "third_party/deqp/src",
+ "../../sdcard/chromium_tests_root/third_party/angle/third_party/VK-GL-CTS/src",
+ "../../third_party/angle/third_party/VK-GL-CTS/src",
+ "../../third_party/VK-GL-CTS/src",
+ "third_party/VK-GL-CTS/src",
};
bool FindDataDir(std::string *dataDirOut)
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp.gni b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp.gni
similarity index 98%
rename from Source/ThirdParty/ANGLE/src/tests/deqp.gni
rename to Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp.gni
index e993b75..2a7f9ca 100644
--- a/Source/ThirdParty/ANGLE/src/tests/deqp.gni
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp.gni
@@ -2,7 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-deqp_path = "../../third_party/deqp/src"
+import("../../../gni/angle.gni")
+deqp_path = "../../third_party/VK-GL-CTS/src"
deqp_include_dirs = [
"$deqp_path/executor",
@@ -24,6 +25,8 @@
"$deqp_path/modules/gles31/functional",
"$deqp_path/modules/gles31/stress",
"$deqp_path/modules/glusecases",
+ "${angle_glslang_dir}",
+ "${angle_spirv_tools_dir}",
]
deqp_gles2_sources = [
@@ -49,6 +52,8 @@
"$deqp_path/modules/gles2/functional/es2fBufferTestUtil.hpp",
"$deqp_path/modules/gles2/functional/es2fBufferWriteTests.cpp",
"$deqp_path/modules/gles2/functional/es2fBufferWriteTests.hpp",
+ "$deqp_path/modules/gles2/functional/es2fClipControlTests.cpp",
+ "$deqp_path/modules/gles2/functional/es2fClipControlTests.hpp",
"$deqp_path/modules/gles2/functional/es2fClippingTests.cpp",
"$deqp_path/modules/gles2/functional/es2fClippingTests.hpp",
"$deqp_path/modules/gles2/functional/es2fColorClearTest.cpp",
@@ -905,7 +910,11 @@
"$deqp_path/external/openglcts/modules/common/glcSampleVariablesTests.hpp",
"$deqp_path/external/openglcts/modules/common/glcSeparableProgramsTransformFeedbackTests.cpp",
"$deqp_path/external/openglcts/modules/common/glcSeparableProgramsTransformFeedbackTests.hpp",
- "$deqp_path/external/openglcts/modules/common/glcShaderConstExprTests.cpp",
+
+ # Override to work around a dEQP bug: https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/1859
+ # "$deqp_path/external/openglcts/modules/common/glcShaderConstExprTests.cpp",
+ "deqp_support/glcShaderConstExprTests_override.cpp",
+
"$deqp_path/external/openglcts/modules/common/glcShaderConstExprTests.hpp",
"$deqp_path/external/openglcts/modules/common/glcShaderGroupVoteTests.cpp",
"$deqp_path/external/openglcts/modules/common/glcShaderGroupVoteTests.hpp",
@@ -919,7 +928,11 @@
"$deqp_path/external/openglcts/modules/common/glcShaderLibraryCase.hpp",
"$deqp_path/external/openglcts/modules/common/glcShaderLoopTests.cpp",
"$deqp_path/external/openglcts/modules/common/glcShaderLoopTests.hpp",
- "$deqp_path/external/openglcts/modules/common/glcShaderMacroTests.cpp",
+
+ # Override to work around a dEQP bug: https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/1859
+ # "$deqp_path/external/openglcts/modules/common/glcShaderMacroTests.cpp",
+ "deqp_support/glcShaderMacroTests_override.cpp",
+
"$deqp_path/external/openglcts/modules/common/glcShaderMacroTests.hpp",
"$deqp_path/external/openglcts/modules/common/glcShaderMultisampleInterpolationTests.cpp",
"$deqp_path/external/openglcts/modules/common/glcShaderMultisampleInterpolationTests.hpp",
@@ -976,6 +989,7 @@
"$deqp_path/external/openglcts/modules/glesext/texture_border_clamp/esextcTextureBorderClampTests.hpp",
"$deqp_path/external/openglcts/modules/glesext/texture_buffer/esextcTextureBufferTests.hpp",
"$deqp_path/external/openglcts/modules/glesext/texture_cube_map_array/esextcTextureCubeMapArrayTests.hpp",
+ "$deqp_path/external/openglcts/modules/glesext/texture_shadow_lod/esextcTextureShadowLodFunctionsTest.hpp",
"$deqp_path/external/openglcts/modules/glesext/draw_buffers_indexed/esextcDrawBuffersIndexedTests.hpp",
"$deqp_path/modules/gles2/tes2Context.hpp",
"$deqp_path/modules/gles2/tes2TestPackage.hpp",
@@ -1365,6 +1379,7 @@
"$deqp_path/external/openglcts/modules/glesext/texture_cube_map_array/esextcTextureCubeMapArrayTests.cpp",
"$deqp_path/external/openglcts/modules/glesext/texture_cube_map_array/esextcTextureCubeMapArrayTex3DValidation.cpp",
"$deqp_path/external/openglcts/modules/glesext/texture_cube_map_array/esextcTextureCubeMapArrayTex3DValidation.hpp",
+ "$deqp_path/external/openglcts/modules/glesext/texture_shadow_lod/esextcTextureShadowLodFunctionsTest.cpp",
]
deqp_framework_debase_sources = [
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_data_autogen.gni b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_data_autogen.gni
new file mode 100644
index 0000000..d63cabc
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_data_autogen.gni
@@ -0,0 +1,323 @@
+# GENERATED FILE - DO NOT EDIT.
+# Generated by: gen_vk_gl_cts_build.py
+#
+# Copyright 2019 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.
+
+import("deqp.gni")
+
+angle_deqp_data_gles2 = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/brick.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/photo_helsinki_113x89.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/photo_helsinki_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/photo_helsinki_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/photo_helsinki_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/photo_helsinki_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/photo_helsinki_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/photo_helsinki_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/photo_helsinki_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/photo_helsinki_mip_7.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_61x61_neg_x.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_61x61_neg_y.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_61x61_neg_z.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_61x61_pos_x.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_61x61_pos_y.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_61x61_pos_z.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_x_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_x_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_x_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_x_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_x_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_x_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_x_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_y_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_y_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_y_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_y_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_y_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_y_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_y_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_z_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_z_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_z_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_z_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_z_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_z_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_neg_z_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_x_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_x_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_x_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_x_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_x_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_x_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_x_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_y_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_y_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_y_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_y_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_y_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_y_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_y_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_z_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_z_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_z_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_z_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_z_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_z_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/data/etc1/skybox_pos_z_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/conditionals.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/constant_expressions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/constants.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/conversions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/declarations.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/fragdata.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/functions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/invalid_constant_expressions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/invalid_implicit_conversions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/invalid_texture_functions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/keywords.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/linkage.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/loops.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/misc.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/preprocessor.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/qualification_order.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/reserved_operators.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/scoping.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/swizzles.test",
+]
+
+angle_deqp_data_gles3 = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/brick.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/photo_helsinki_113x89.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/photo_helsinki_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/photo_helsinki_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/photo_helsinki_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/photo_helsinki_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/photo_helsinki_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/photo_helsinki_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/photo_helsinki_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/photo_helsinki_mip_7.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_61x61_neg_x.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_61x61_neg_y.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_61x61_neg_z.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_61x61_pos_x.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_61x61_pos_y.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_61x61_pos_z.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_x_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_x_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_x_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_x_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_x_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_x_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_x_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_y_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_y_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_y_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_y_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_y_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_y_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_y_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_z_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_z_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_z_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_z_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_z_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_z_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_neg_z_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_x_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_x_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_x_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_x_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_x_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_x_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_x_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_y_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_y_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_y_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_y_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_y_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_y_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_y_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_z_mip_0.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_z_mip_1.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_z_mip_2.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_z_mip_3.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_z_mip_4.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_z_mip_5.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/data/etc1/skybox_pos_z_mip_6.pkm",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/arrays.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/conditionals.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/constant_expressions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/constants.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/conversions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/declarations.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/fragdata.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/functions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/indexing.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/invalid_implicit_conversions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/invalid_texture_functions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/keywords.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/large_constant_arrays.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/linkage.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/loops.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/negative.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/preprocessor.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/qualification_order.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/scoping.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/switch.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/swizzle_math_operations.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/swizzles.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/shaders/uniform_block.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/bubblesort_flag/recipient.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/bubblesort_flag/variant_1.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/bubblesort_flag/variant_2.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/recipient.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/variant_1.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/variant_2.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/variant_3.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/variant_4.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/vertexShader.glsl",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/arrays.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/declarations.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/literal_parsing.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/name_hiding.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/preprocessor.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/switch.test",
+]
+
+angle_deqp_data_gles31 = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/barrier_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/gl_position_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/isolines_equal_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/isolines_equal_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/isolines_equal_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/isolines_fractional_even_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/isolines_fractional_even_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/isolines_fractional_even_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/isolines_fractional_odd_spacing_ref_0.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/isolines_fractional_odd_spacing_ref_1.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/isolines_fractional_odd_spacing_ref_2.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/patch_vertices_10_in_10_out_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/patch_vertices_10_in_5_out_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/patch_vertices_5_in_10_out_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/primitive_id_tcs_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/primitive_id_tes_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/user_defined_io_isolines_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/user_defined_io_quads_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/data/tessellation/user_defined_io_triangles_ref.png",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/android_extension_pack.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/arrays.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/arrays_of_arrays.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/declarations.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/functions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/implicit_conversions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_geometry.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_geometry_uniform_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_geometry_varying_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_io_block.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_shader_storage_block.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_tessellation.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_tessellation_geometry.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_tessellation_geometry_varying_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_tessellation_uniform_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_tessellation_varying_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/linkage_uniform.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/separate_shader_validation.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/tessellation_negative_user_defined_io.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/uniform_block.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es31/uniform_location.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/android_extension_pack.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/arrays.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/arrays_of_arrays.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/functions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/implicit_conversions.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_geometry.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_geometry_uniform_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_geometry_varying_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_io_block.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_shader_storage_block.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_tessellation.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_tessellation_geometry.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_tessellation_geometry_varying_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_tessellation_uniform_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_tessellation_varying_types.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/linkage_uniform.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/separate_shader_validation.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/tessellation_negative_user_defined_io.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/uniform_block.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gles31/shaders/es32/uniform_location.test",
+]
+
+angle_deqp_external_graphicsfuzz_data_gles3 = [
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/bubblesort_flag/recipient.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/bubblesort_flag/variant_1.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/bubblesort_flag/variant_2.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/recipient.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/variant_1.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/variant_2.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/variant_3.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/synthetic/variant_4.frag",
+ "$root_gen_dir/vk_gl_cts_data/data/gles3/graphicsfuzz/vertexShader.glsl",
+]
+
+angle_deqp_external_openglcts_data_gles3 = [
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/arrays.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/declarations.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/literal_parsing.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/name_hiding.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/preprocessor.test",
+ "$root_gen_dir/vk_gl_cts_data/data/gl_cts/data/gles3/switch.test",
+]
+
+angle_deqp_data_copy_targets = [
+ "deqp_support:vk_gl_cts_data_data_gles2_data",
+ "deqp_support:vk_gl_cts_data_data_gles2_data_etc1",
+ "deqp_support:vk_gl_cts_data_data_gles2_shaders",
+ "deqp_support:vk_gl_cts_data_data_gles3_data",
+ "deqp_support:vk_gl_cts_data_data_gles3_data_etc1",
+ "deqp_support:vk_gl_cts_data_data_gles3_shaders",
+ "deqp_support:vk_gl_cts_data_data_gles31_data_tessellation",
+ "deqp_support:vk_gl_cts_data_data_gles31_shaders_es31",
+ "deqp_support:vk_gl_cts_data_data_gles31_shaders_es32",
+ "deqp_support:vk_gl_cts_data_external_graphicsfuzz_data_gles3_graphicsfuzz",
+ "deqp_support:vk_gl_cts_data_external_graphicsfuzz_data_gles3_graphicsfuzz_bubblesort_flag",
+ "deqp_support:vk_gl_cts_data_external_graphicsfuzz_data_gles3_graphicsfuzz_synthetic",
+ "deqp_support:vk_gl_cts_data_external_openglcts_data_gles3",
+]
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_egl_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_egl_TestExpectations
new file mode 100644
index 0000000..eaed281
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_egl_TestExpectations
@@ -0,0 +1,251 @@
+// Copyright 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.
+
+// This file contains a list of defective dEQP conformance tests. The expected
+// format is:
+// {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
+//
+// MODIFIERS can be a combination of the below list, combined with a logical AND:
+// WIN XP VISTA WIN7 WIN8 WIN10
+// MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
+// LINUX CHROMEOS ANDROID
+// NVIDIA AMD INTEL
+// DEBUG RELEASE
+// D3D9 D3D11 OPENGL GLES VULKAN
+// NEXUS5X PIXEL2ORXL
+// QUADROP400
+//
+//
+// TEST_NAME can be a specific test name, or have a '*' in the end, which
+// indicates a prefix matching.
+//
+// Examples:
+// fails on both windows and mac (crash)
+// 91530 WIN : context_lost_restored = SKIP
+// 91530 MAC : context_lost_restored = SKIP
+// fails on windows using NVIDIA GPUs
+// 91533 WIN NVIDIA : gl_min_uniforms = FAIL
+// fails on Nexus5X with GLES backend (hangs)
+// 91531 NEXUS5X GLES : conformance_more_* = SKIP
+
+// Only Vulkan supports multithreading
+3916 OPENGL : dEQP-EGL.functional.sharing.gles2.multithread.* = SKIP
+3916 OPENGL : dEQP-EGL.functional.multithread.* = SKIP
+3916 OPENGL : dEQP-EGL.functional.render.multi_thread.* = SKIP
+3916 OPENGL : dEQP-EGL.functional.color_clears.multi_thread.* = SKIP
+3916 GLES : dEQP-EGL.functional.sharing.gles2.multithread.* = SKIP
+3916 GLES : dEQP-EGL.functional.multithread.* = SKIP
+3916 GLES : dEQP-EGL.functional.render.multi_thread.* = SKIP
+3916 GLES : dEQP-EGL.functional.color_clears.multi_thread.* = SKIP
+3916 D3D11 : dEQP-EGL.functional.sharing.gles2.multithread.* = SKIP
+3916 D3D11 : dEQP-EGL.functional.multithread.* = SKIP
+3916 D3D11 : dEQP-EGL.functional.render.multi_thread.* = SKIP
+3916 D3D11 : dEQP-EGL.functional.color_clears.multi_thread.* = SKIP
+3916 D3D9 : dEQP-EGL.functional.sharing.gles2.multithread.* = SKIP
+3916 D3D9 : dEQP-EGL.functional.multithread.* = SKIP
+3916 D3D9 : dEQP-EGL.functional.render.multi_thread.* = SKIP
+3916 D3D9 : dEQP-EGL.functional.color_clears.multi_thread.* = SKIP
+
+// Seems to time out on Linux.
+4031916 VULKAN : dEQP-EGL.functional.multithread.* = SKIP
+
+// These tests require pixmap surfaces. On many platforms they are unsupported.
+3917 ANDROID VULKAN : dEQP-EGL.functional.render.multi_thread.* = FAIL
+3917 ANDROID VULKAN : dEQP-EGL.functional.color_clears.multi_thread.* = FAIL
+
+// dEQP doesn't handle configs created for extensions
+1662 WIN : dEQP-EGL.functional.color_clears.single_context.gles2.other = FAIL
+1662 WIN : dEQP-EGL.functional.color_clears.single_context.gles3.other = FAIL
+1662 WIN : dEQP-EGL.functional.color_clears.multi_context.gles2.other = FAIL
+1662 WIN : dEQP-EGL.functional.color_clears.multi_context.gles3.other = FAIL
+1662 WIN : dEQP-EGL.functional.render.single_context.gles2.other = FAIL
+1662 WIN : dEQP-EGL.functional.render.single_context.gles3.other = FAIL
+1662 WIN : dEQP-EGL.functional.render.multi_context.gles2.other = FAIL
+1662 WIN : dEQP-EGL.functional.render.multi_context.gles3.other = FAIL
+1662 WIN : dEQP-EGL.functional.render.multi_context.gles2_gles3.other = FAIL
+1662 WIN : dEQP-EGL.functional.native_coord_mapping.native_window.other_clear = FAIL
+1662 WIN : dEQP-EGL.functional.native_coord_mapping.native_window.other_render = FAIL
+1662 WIN : dEQP-EGL.functional.query_context.get_current_context.other = FAIL
+1662 WIN : dEQP-EGL.functional.query_context.get_current_surface.other = FAIL
+1662 WIN : dEQP-EGL.functional.query_context.get_current_display.other = FAIL
+1662 WIN : dEQP-EGL.functional.query_context.query_context.other = FAIL
+1662 WIN : dEQP-EGL.functional.native_color_mapping.native_window.other_clear = SKIP
+1662 WIN : dEQP-EGL.functional.native_color_mapping.native_window.other_render = SKIP
+
+// Intentionally causes TDRs that eventually blacklist the application
+2319 : dEQP-EGL.functional.robustness.reset_context.shaders.infinite_loop.* = SKIP
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Temprory entries: they should be removed once the bugs are fixed.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Flaky since we enabled depth/stencil backbuffer in all tests.
+2429 WIN NVIDIA : dEQP-EGL.functional.query_context.query_context.rgba8888_window = FAIL
+
+// TODO(jmadill): Triage these into permananent and temporary failures.
+1340 WIN : dEQP-EGL.functional.query_config.get_configs.get_configs_bounds = FAIL
+3270 WIN : dEQP-EGL.functional.choose_config.simple.selection_only.config_id = FAIL
+3270 WIN : dEQP-EGL.functional.choose_config.simple.selection_and_sort.config_id = FAIL
+1340 WIN : dEQP-EGL.functional.render.single_context.gles2.rgba5551_window = FAIL
+1340 WIN : dEQP-EGL.functional.render.single_context.gles2.rgba5551_pbuffer = FAIL
+1340 WIN : dEQP-EGL.functional.render.single_context.gles3.rgba5551_window = FAIL
+1340 WIN : dEQP-EGL.functional.render.single_context.gles3.rgba5551_pbuffer = FAIL
+1340 WIN : dEQP-EGL.functional.render.multi_context.gles2.rgba5551_window = FAIL
+1340 WIN : dEQP-EGL.functional.render.multi_context.gles2.rgba5551_pbuffer = FAIL
+1340 WIN : dEQP-EGL.functional.render.multi_context.gles3.rgba5551_window = FAIL
+1340 WIN : dEQP-EGL.functional.render.multi_context.gles3.rgba5551_pbuffer = FAIL
+1340 WIN : dEQP-EGL.functional.render.multi_context.gles2_gles3.rgba5551_window = FAIL
+1340 WIN : dEQP-EGL.functional.render.multi_context.gles2_gles3.rgba5551_pbuffer = FAIL
+1340 WIN : dEQP-EGL.functional.negative_api.choose_config = SKIP
+1340 WIN : dEQP-EGL.functional.negative_api.surface_attrib = SKIP
+1340 WIN : dEQP-EGL.functional.negative_api.swap_interval = FAIL
+2382 WIN : dEQP-EGL.functional.native_color_mapping.native_window.* = SKIP
+1340 WIN : dEQP-EGL.functional.native_coord_mapping.native_window.* = FAIL
+2716 WIN : dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap.* = SKIP
+2716 WIN : dEQP-EGL.functional.preserve_swap.preserve.read_before_swap.* = SKIP
+1340 WIN : dEQP-EGL.functional.resize.back_buffer.* = SKIP
+1340 WIN : dEQP-EGL.functional.resize.pixel_density.* = SKIP
+
+// Windows OpenGL failures
+2546 WIN : dEQP-EGL.functional.resize.surface_size.shrink = SKIP
+2546 WIN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_depth_stencil = FAIL
+2546 WIN : dEQP-EGL.functional.thread_cleanup.* = SKIP
+
+// Windows Vulkan failures
+2635 WIN VULKAN : dEQP-EGL.functional.multicontext.non_shared_clear = FAIL
+2635 WIN VULKAN : dEQP-EGL.functional.multicontext.non_shared_make_current = FAIL
+2635 WIN VULKAN : dEQP-EGL.functional.multicontext.shared_clear = FAIL
+2635 WIN VULKAN : dEQP-EGL.functional.multicontext.shared_make_current = FAIL
+2635 WIN VULKAN : dEQP-EGL.functional.query_surface.set_attribute.pbuffer.rgba8888_depth_stencil = FAIL
+2635 WIN VULKAN : dEQP-EGL.functional.query_surface.set_attribute.pbuffer.rgba8888_no_depth_no_stencil = FAIL
+2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_depth_no_stencil = FAIL
+2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_depth_stencil = FAIL
+2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_no_depth_no_stencil = FAIL
+2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_depth_no_stencil = FAIL
+2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_no_depth_no_stencil = FAIL
+2635 WIN VULKAN : dEQP-EGL.functional.resize.surface_size.grow = FAIL
+2635 WIN VULKAN : dEQP-EGL.functional.resize.surface_size.stretch_height = FAIL
+2635 WIN VULKAN : dEQP-EGL.functional.resize.surface_size.stretch_width = FAIL
+2635 WIN VULKAN : dEQP-EGL.functional.wide_color.pbuffer_8888_colorspace_default = FAIL
+2716 WIN VULKAN : dEQP-EGL.functional.preserve_swap.no_preserve.* = FAIL
+
+// Linux failures
+2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles1.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles1_gles2.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles1_gles2_gles3.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles2.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles3.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.color_clears.single_context.gles1.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.color_clears.single_context.gles2.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.color_clears.single_context.gles3.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.create_surface.pixmap.rgba8888_depth_stencil = SKIP
+2546 LINUX : dEQP-EGL.functional.create_surface.pixmap.rgba8888_no_depth_no_stencil = SKIP
+2546 LINUX : dEQP-EGL.functional.negative_api.copy_buffers = SKIP
+2546 LINUX : dEQP-EGL.functional.query_context.get_current_context.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.query_context.get_current_display.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.query_context.get_current_surface.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.query_context.query_context.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.query_surface.set_attribute.pixmap.rgba8888_depth_stencil = SKIP
+2546 LINUX : dEQP-EGL.functional.query_surface.set_attribute.pixmap.rgba8888_no_depth_no_stencil = SKIP
+2546 LINUX : dEQP-EGL.functional.query_surface.simple.pixmap.rgba8888_depth_stencil = SKIP
+2546 LINUX : dEQP-EGL.functional.query_surface.simple.pixmap.rgba8888_no_depth_no_stencil = SKIP
+2546 LINUX : dEQP-EGL.functional.render.multi_context.* = SKIP
+2546 LINUX : dEQP-EGL.functional.render.single_context.gles2.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.render.single_context.gles3.rgba8888_pixmap = SKIP
+2546 LINUX : dEQP-EGL.functional.thread_cleanup.* = SKIP
+2546 LINUX : dEQP-EGL.functional.native_color_mapping.native_window.* = FAIL
+2546 LINUX : dEQP-EGL.functional.native_coord_mapping.native_window.* = FAIL
+2546 LINUX : dEQP-EGL.functional.negative_api.choose_config = FAIL
+2546 LINUX : dEQP-EGL.functional.negative_api.swap_interval = FAIL
+2546 LINUX : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_depth_stencil = FAIL
+2546 LINUX : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_no_depth_no_stencil = FAIL
+
+// Linux Vulkan failures
+2635 LINUX VULKAN : dEQP-EGL.functional.query_surface.set_attribute.pbuffer.rgba8888_depth_stencil = FAIL
+2635 LINUX VULKAN : dEQP-EGL.functional.query_surface.set_attribute.pbuffer.rgba8888_no_depth_no_stencil = FAIL
+2715 LINUX VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_depth_stencil = FAIL
+2715 LINUX VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_no_depth_no_stencil = FAIL
+2716 LINUX VULKAN : dEQP-EGL.functional.preserve_swap.no_preserve.* = FAIL
+
+// Mac failures
+2546 MAC : dEQP-EGL.functional.native_color_mapping.native_window.* = FAIL
+2546 MAC : dEQP-EGL.functional.native_coord_mapping.native_window.* = FAIL
+2546 MAC : dEQP-EGL.functional.negative_api.choose_config = FAIL
+2546 MAC : dEQP-EGL.functional.negative_api.copy_buffers = FAIL
+2546 MAC : dEQP-EGL.functional.negative_api.swap_interval = FAIL
+2546 MAC : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_depth_stencil = FAIL
+2546 MAC : dEQP-EGL.functional.thread_cleanup.* = SKIP
+
+// Android GLES-only failues
+2567 ANDROID GLES : dEQP-EGL.functional.image.api.create_image_gles2_tex2d_red = FAIL
+2567 ANDROID GLES : dEQP-EGL.functional.image.api.create_image_gles2_tex2d_rg = FAIL
+2716 ANDROID GLES : dEQP-EGL.functional.preserve_swap.preserve.* = FAIL
+
+// Android failures
+2546 ANDROID : dEQP-EGL.functional.buffer_age.* = FAIL
+3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_only.transparent_red_value = FAIL
+3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_only.transparent_green_value = FAIL
+3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_only.transparent_blue_value = FAIL
+3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_and_sort.transparent_red_value = FAIL
+3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_and_sort.transparent_green_value = FAIL
+3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_and_sort.transparent_blue_value = FAIL
+2546 ANDROID : dEQP-EGL.functional.color_clears.multi_context.* = SKIP
+2546 ANDROID : dEQP-EGL.functional.color_clears.single_context.* = SKIP
+2546 ANDROID : dEQP-EGL.functional.native_color_mapping.native_window.* = SKIP
+2546 ANDROID : dEQP-EGL.functional.native_coord_mapping.native_window.* = SKIP
+2546 ANDROID : dEQP-EGL.functional.negative_api.copy_buffers = FAIL
+2546 ANDROID : dEQP-EGL.functional.partial_update.odd_clear_* = FAIL
+2546 ANDROID : dEQP-EGL.functional.partial_update.odd_render_* = FAIL
+2546 ANDROID : dEQP-EGL.functional.partial_update.render_* = FAIL
+2546 ANDROID : dEQP-EGL.functional.render.multi_context.* = SKIP
+2546 ANDROID : dEQP-EGL.functional.render.single_context.* = SKIP
+2546 ANDROID : dEQP-EGL.functional.thread_cleanup.multi_context_* = SKIP
+2546 ANDROID : dEQP-EGL.functional.thread_cleanup.single_context_* = FAIL
+
+// Vulkan
+3081 VULKAN : dEQP-EGL.functional.image.create.gles2_renderbuffer_depth16_depth_buffer = SKIP
+3081 VULKAN : dEQP-EGL.functional.image.create.gles2_renderbuffer_stencil_stencil_buffer = SKIP
+3081 VULKAN : dEQP-EGL.functional.image.modify.renderbuffer_depth16_renderbuffer_clear_depth = SKIP
+3081 VULKAN : dEQP-EGL.functional.image.modify.renderbuffer_stencil_renderbuffer_clear_stencil = SKIP
+3081 VULKAN : dEQP-EGL.functional.image.render_multiple_contexts.gles2_renderbuffer_depth16_depth_buffer = SKIP
+3081 VULKAN : dEQP-EGL.functional.image.render_multiple_contexts.gles2_renderbuffer_stencil_stencil_buffer = SKIP
+
+// Android Vulkan
+2546 ANDROID VULKAN : dEQP-EGL.functional.create_surface.window.other = SKIP
+2546 ANDROID VULKAN : dEQP-EGL.functional.query_context.get_current_surface.other = SKIP
+2546 ANDROID VULKAN : dEQP-EGL.functional.query_surface.set_attribute.window.other = SKIP
+2546 ANDROID VULKAN : dEQP-EGL.functional.query_surface.simple.window.other = SKIP
+2546 ANDROID VULKAN : dEQP-EGL.functional.resize.pixel_density.* = SKIP
+2546 ANDROID VULKAN : dEQP-EGL.functional.wide_color.window* = SKIP
+
+// Robustness failures on multiple platforms
+3711 : dEQP-EGL.functional.robustness.reset_context.shaders.out_of_bounds.reset_status.reads.* = FAIL
+3711 : dEQP-EGL.functional.robustness.reset_context.shaders.out_of_bounds.reset_status.writes.* = FAIL
+
+// ES 1 tests
+2306 WIN : dEQP-EGL.functional.color_clears.single_context.gles1* = FAIL
+2306 WIN : dEQP-EGL.functional.color_clears.multi_context.gles1* = FAIL
+2306 MAC : dEQP-EGL.functional.color_clears.single_context.gles1* = FAIL
+2306 MAC : dEQP-EGL.functional.color_clears.multi_context.gles1* = FAIL
+2306 LINUX : dEQP-EGL.functional.color_clears.single_context.gles1* = FAIL
+2306 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles1* = FAIL
+
+// Tests failing since the Jan 2018 roll of dEQP
+2341 : dEQP-EGL.functional.swap_buffers.* = SKIP
+2330 : dEQP-EGL.functional.robustness.create_context.no_reset_notification = SKIP
+2330 : dEQP-EGL.functional.robustness.create_context.lose_context_on_reset = SKIP
+2330 : dEQP-EGL.functional.robustness.reset_context.fixed_function_pipeline.reset_status.index_buffer_out_of_bounds = SKIP
+2330 : dEQP-EGL.functional.robustness.reset_context.fixed_function_pipeline.reset_status.vertex_buffer_out_of_bounds = SKIP
+
+// Tests were being hidden by flakiness (anglebug.com/3271)
+3325 : dEQP-EGL.functional.fence_sync.* = SKIP
+3325 : dEQP-EGL.functional.reusable_sync.* = SKIP
+
+// Nexus 5x
+2546 NEXUS5X : dEQP-EGL.functional.query_context.get_current_context.* = SKIP
+2546 NEXUS5X : dEQP-EGL.functional.query_context.get_current_display.* = SKIP
+2546 NEXUS5X : dEQP-EGL.functional.query_context.get_current_surface.r* = FAIL
+2546 NEXUS5X : dEQP-EGL.functional.query_context.query_context.* = SKIP
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles2_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles2_TestExpectations
new file mode 100644
index 0000000..55f7ae7
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles2_TestExpectations
@@ -0,0 +1,380 @@
+// Copyright 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.
+
+// This file contains a list of defective dEQP conformance tests. The expected
+// format is:
+// {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
+//
+// MODIFIERS can be a combination of the below list, combined with a logical AND:
+// WIN XP VISTA WIN7 WIN8 WIN10
+// MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
+// LINUX CHROMEOS ANDROID
+// NVIDIA AMD INTEL
+// DEBUG RELEASE
+// D3D9 D3D11 OPENGL GLES VULKAN
+// NEXUS5X PIXEL2ORXL
+// QUADROP400
+//
+//
+// TEST_NAME can be a specific test name, or have a '*' in the end, which
+// indicates a prefix matching.
+//
+// Examples:
+// fails on both windows and mac (crash)
+// 91530 WIN : context_lost_restored = SKIP
+// 91530 MAC : context_lost_restored = SKIP
+// fails on windows using NVIDIA GPUs
+// 91533 WIN NVIDIA : gl_min_uniforms = FAIL
+// fails on Nexus5X with GLES backend (hangs)
+// 91531 NEXUS5X GLES : conformance_more_* = SKIP
+
+// Skip these tests due to timeouts
+1034 : dEQP-GLES2.functional.flush_finish.* = SKIP
+
+// Failures related to not supporting separate depth/stencil masks on D3D11.
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_* = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.* = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.* = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.random.* = FAIL
+1655 D3D11 : dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.* = FAIL
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Temporary entries: they should be removed once the bugs are fixed.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Vertex attribute aliasing is not supported on D3D
+3467 D3D9 : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond* = FAIL
+3467 D3D9 : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond* = FAIL
+3467 D3D11 : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond* = FAIL
+3467 D3D11 : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond* = FAIL
+
+// Shader failures.
+3434 NEXUS5X GLES : dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_* = FAIL
+
+// The fragment_ops.depth_stencil.random tests all seem to fail on D3D11.
+3282 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.random.* = FAIL
+
+// Failures related to the depth_range on Windows / NVIDIA and ATI.
+2426 D3D11 : dEQP-GLES2.functional.depth_range.write.reverse = FAIL
+2426 D3D11 : dEQP-GLES2.functional.depth_range.write.half_to_zero = FAIL
+2426 D3D11 : dEQP-GLES2.functional.depth_range.write.one_to_half = FAIL
+2426 D3D11 : dEQP-GLES2.functional.depth_range.write.0_8_to_third = FAIL
+2426 D3D11 : dEQP-GLES2.functional.depth_range.compare.reverse = FAIL
+2426 D3D11 : dEQP-GLES2.functional.depth_range.compare.half_to_zero = FAIL
+2426 D3D11 : dEQP-GLES2.functional.depth_range.compare.one_to_half = FAIL
+2426 D3D11 : dEQP-GLES2.functional.depth_range.compare.0_8_to_third = FAIL
+
+// Windows D3D11 Intel and NVIDIA. Suppressed on all cards for simplicity.
+3292 D3D11 : dEQP-GLES2.functional.polygon_offset.default_render_with_units = FAIL
+3292 D3D11 : dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units = FAIL
+
+// Common subexpression invariance
+3293 D3D11 : dEQP-GLES2.functional.shaders.invariance.highp.common_subexpression_1 = FAIL
+3293 D3D11 : dEQP-GLES2.functional.shaders.invariance.lowp.common_subexpression_1 = FAIL
+3293 D3D11 : dEQP-GLES2.functional.shaders.invariance.mediump.common_subexpression_1 = FAIL
+
+// Fails with significant image differences
+3295 D3D11 : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
+
+// Only fails in D3D11 32-bit.
+1418 D3D11 : dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_pos_x_pos_y_pos_z_and_neg_x_pos_y_pos_z_and_neg_x_neg_y_neg_z = FAIL
+
+// D3D11 AMD
+2342 D3D11 AMD : dEQP-GLES2.functional.texture.size.cube.64x64_l8 = FAIL
+2342 D3D11 AMD : dEQP-GLES2.functional.texture.size.cube.64x64_rgb888 = FAIL
+2342 D3D11 AMD : dEQP-GLES2.functional.texture.size.cube.64x64_rgba8888 = FAIL
+
+// Additional texture.vertex.cube failures on AMD
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_repeat = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_repeat = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_clamp = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_repeat = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_mirror = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_clamp = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_repeat = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_mirror = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_clamp = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat = FAIL
+3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_mirror = FAIL
+
+// Quadro P400
+// TODO(jmadill): Narrow to P400 device only: 0x1CB3.
+2222 D3D11 NVIDIA : dEQP-GLES2.functional.shaders.functions.control_flow.return_in_nested_loop_fragment = FAIL
+2222 D3D11 NVIDIA : dEQP-GLES2.functional.shaders.functions.control_flow.return_in_nested_loop_vertex = FAIL
+
+// AMD GPU vertex shader texture sampling is not precise enough when rendering to 32-bit backbuffers
+2337 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.2d.wrap.* = FAIL
+2337 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_* = FAIL
+2337 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_* = FAIL
+
+// Several mipmap sub tests fail on AMD. Mark them all as failing conservatively.
+3296 D3D11 AMD : dEQP-GLES2.functional.texture.mipmap.* = FAIL
+
+// Failures on the D3D11 bots that do not reproduce locally
+// TODO(jmadill): Figure out why these fail on the bots, but not locally.
+1108 D3D11 : dEQP-GLES2.functional.shaders.struct.local.dynamic_loop_struct_array_fragment = FAIL
+1108 D3D11 : dEQP-GLES2.functional.shaders.invariance.highp.loop_2 = FAIL
+1108 D3D11 : dEQP-GLES2.functional.shaders.invariance.mediump.loop_2 = FAIL
+
+// OpenGL desktop back-end failures
+1656 OPENGL : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.srgb8_alpha8 = FAIL
+1656 OPENGL : dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.srgb8_alpha8 = FAIL
+1656 OPENGL : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.srgb8_alpha8 = FAIL
+3291 OPENGL : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
+
+// Linux OpenGL Intel
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide = FAIL
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide = FAIL
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide = FAIL
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide = FAIL
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide = FAIL
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide = FAIL
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_repeat = FAIL
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_repeat = FAIL
+3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat = FAIL
+
+// Linux OpenGL NVIDIA
+3303 OPENGL NVIDIA LINUX : dEQP-GLES2.functional.texture.mipmap.cube.projected.nearest_linear = FAIL
+
+// Mac OpenGL specific failures
+3466 MAC OPENGL : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond* = SKIP
+3466 MAC OPENGL : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond* = SKIP
+3433 MAC OPENGL : dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_vertex = FAIL
+1143 MAC OPENGL : dEQP-GLES2.functional.shaders.scoping.valid.local_int_variable_hides_struct_type_* = FAIL
+1143 MAC OPENGL : dEQP-GLES2.functional.shaders.scoping.valid.local_struct_variable_hides_struct_type_* = FAIL
+1143 MAC OPENGL : dEQP-GLES2.functional.shaders.scoping.valid.function_parameter_hides_struct_type_* = FAIL
+1143 MAC OPENGL : dEQP-GLES2.functional.shaders.random.trigonometric.vertex.65 = FAIL
+2631 MAC OPENGL : dEQP-GLES2.functional.shaders.operator.sequence.side_effects.affect_* = FAIL
+3317 MAC OPENGL : dEQP-GLES2.functional.shaders.linkage.varying_4 = FAIL
+
+// MAC OPENGL INTEL specific
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.complex_rgb = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.complex_rgba = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.long_masked_rgb = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.long_masked_rgba = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.masked_rgb = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.masked_rgba = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.masked_scissored_rgb = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.masked_scissored_rgba = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.scissored_rgb = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.scissored_rgba = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.short_scissored_rgb = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_alpha = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_luminance = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_luminance_alpha = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_rgb = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_rgba = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.discard.dynamic_loop_never = SKIP
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.discard.function_static_loop_never = SKIP
+2137 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.discard.static_loop_never = SKIP
+
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.polygon_offset.default_render_with_units = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.highp.common_subexpression_1 = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.highp.common_subexpression_3 = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.mediump.common_subexpression_1 = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.mediump.common_subexpression_3 = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.lowp.common_subexpression_1 = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.lowp.common_subexpression_3 = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba8888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgb888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba4444_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_l8_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_repeat_rgba8888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_repeat_rgb888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_repeat_rgba4444_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_repeat_l8_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_mirror_rgba8888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_mirror_rgb888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_mirror_rgba4444_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_mirror_l8_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba8888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgb888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba4444_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_l8_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_repeat_rgba8888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_repeat_rgb888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_repeat_rgba4444_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_repeat_l8_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_mirror_rgba8888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_mirror_rgb888_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_mirror_rgba4444_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_mirror_l8_pot = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_nearest_* = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_nearest_* = FAIL
+
+3531 MAC OPENGL INTEL : dEQP-GLES2.functional.fbo.render.color_clear.tex2d_rgb = FAIL
+3531 MAC OPENGL INTEL : dEQP-GLES2.functional.fbo.render.color_clear.tex2d_rgb_depth_component16 = FAIL
+3531 MAC OPENGL INTEL : dEQP-GLES2.functional.fbo.render.color_clear.tex2d_rgb_stencil_index8 = FAIL
+3531 MAC OPENGL INTEL : dEQP-GLES2.functional.fbo.render.stencil_clear.tex2d_rgb_stencil_index8 = FAIL
+
+// Mac AMD OpenGL specific
+2137 MAC OPENGL AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip = FAIL
+3317 MAC OPENGL AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center = FAIL
+3317 MAC OPENGL AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner = FAIL
+
+// Android GLES backend only failures
+1488 GLES ANDROID : dEQP-GLES2.functional.shaders.return.conditional_return_always_vertex = FAIL
+1488 GLES ANDROID : dEQP-GLES2.functional.shaders.return.conditional_return_always_fragment = FAIL
+1488 GLES ANDROID : dEQP-GLES2.functional.shaders.return.output_write_always_vertex = FAIL
+1488 GLES ANDROID : dEQP-GLES2.functional.shaders.return.output_write_always_fragment = FAIL
+2631 GLES ANDROID : dEQP-GLES2.functional.shaders.operator.sequence.side_effects.affect_* = FAIL
+2630 GLES ANDROID : dEQP-GLES2.functional.shaders.struct.uniform.sampler_in_array_function_arg_* = FAIL
+2630 GLES ANDROID : dEQP-GLES2.functional.shaders.struct.uniform.sampler_in_function_arg_* = FAIL
+
+// Nexus 5x failures
+3309 NEXUS5X GLES : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond* = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond* = FAIL
+3716 NEXUS5X GLES : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_int = FAIL
+3716 NEXUS5X GLES : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_short = FAIL
+3716 NEXUS5X GLES : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_stencil_unsigned_int_24_8 = FAIL
+3716 NEXUS5X GLES : dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.depth_stencil_unsigned_int_24_8 = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.fbo.render.texsubimage.after_render_tex2d_rgb = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.polygon_offset.default_result_depth_clamp = FAIL
+3715 NEXUS5X GLES : dEQP-GLES2.functional.shaders.builtin_variable.max_draw_buffers_vertex = FAIL
+3715 NEXUS5X GLES : dEQP-GLES2.functional.shaders.builtin_variable.max_draw_buffers_fragment = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.shaders.return.output_write_in_func_always_vertex = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.shaders.return.output_write_in_func_always_fragment = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.texture.mipmap.cube.* = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_* = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_* = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_* = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.uniform_api.random.3 = FAIL
+3309 NEXUS5X GLES : dEQP-GLES2.functional.uniform_api.random.54 = FAIL
+
+// D3D11 AMD already covered by Line 148
+3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest = FAIL
+3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear = FAIL
+3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest = FAIL
+3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
+3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest = FAIL
+3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear = FAIL
+3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest = FAIL
+3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear = FAIL
+3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest = FAIL
+3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
+3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest = FAIL
+3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear = FAIL
+
+// Fail with very tiny pixel differences
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp = FAIL
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror = FAIL
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp = FAIL
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror = FAIL
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp = FAIL
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat = FAIL
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror = FAIL
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp = FAIL
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat = FAIL
+3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror = FAIL
+
+// Android Vulkan backend only failures
+2549 VULKAN ANDROID : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil* = SKIP
+4109 VULKAN ANDROID : dEQP-GLES2.functional.texture.mipmap.cube.projected.nearest_linear = FAIL
+
+// Adreno line rasterization is not conformant.
+2830 VULKAN ANDROID : dEQP-GLES2.functional.rasterization.primitives.line_loop = FAIL
+2830 VULKAN ANDROID : dEQP-GLES2.functional.rasterization.primitives.line_strip = FAIL
+2830 VULKAN ANDROID : dEQP-GLES2.functional.rasterization.primitives.lines = FAIL
+
+// Failing on the Pixel 2.
+2808 VULKAN ANDROID : dEQP-GLES2.functional.shaders.builtin_variable.fragcoord_w = FAIL
+3306 VULKAN ANDROID : dEQP-GLES2.functional.polygon_offset.default_factor_1_slope = FAIL
+3306 VULKAN ANDROID : dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope = FAIL
+
+// These tests also fail on AMD windows driver as it is not allowed to use emulation due to errors.
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat = FAIL
+3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror = FAIL
+
+// Vulkan AMD drivers don't seem to support wide point clipping.
+2463 VULKAN WIN AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip = FAIL
+2463 VULKAN WIN AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center = FAIL
+2463 VULKAN WIN AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner = FAIL
+
+// These failures are possibly due to an AMD driver bug.
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.draw.random.14 = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.draw.random.30 = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.draw.random.41 = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_17_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_2_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_32_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_17_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_2_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_32_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_17_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_float* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_17_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_float* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_3_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_6_short* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float* = SKIP
+2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short* = SKIP
+
+// Fails after OpenGL line rasterization rules implementation. Possibly a bug in FragCoord.
+2809 VULKAN WIN AMD : dEQP-GLES2.functional.clipping.line.long_line_clip = FAIL
+
+// Polygon offset failures
+3301 VULKAN WIN AMD : dEQP-GLES2.functional.polygon_offset.default_result_depth_clamp = FAIL
+3301 VULKAN WIN AMD : dEQP-GLES2.functional.polygon_offset.default_factor_1_slope = FAIL
+3301 VULKAN WIN AMD : dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units = FAIL
+
+// Failures on newer NVIDIA drivers (411.95) and passes on older drivers (388.16).
+2976 VULKAN NVIDIA : dEQP-GLES2.functional.shaders.invariance.* = FAIL
+// Fails on 431.02 NVIDIA driver
+3748 VULKAN WIN NVIDIA : dEQP-GLES2.functional.fbo.render.repeated_clear.* = FAIL
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_TestExpectations
new file mode 100644
index 0000000..4fcbaa3
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_TestExpectations
@@ -0,0 +1,694 @@
+// Copyright 2016 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.
+
+// This file contains a list of defective dEQP conformance tests. The expected
+// format is:
+// {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
+//
+// MODIFIERS can be a combination of the below list, combined with a logical AND:
+// WIN XP VISTA WIN7 WIN8 WIN10
+// MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
+// LINUX CHROMEOS ANDROID
+// NVIDIA AMD INTEL
+// DEBUG RELEASE
+// D3D9 D3D11 OPENGL GLES VULKAN
+// NEXUS5X PIXEL2ORXL
+// QUADROP400
+// SWIFTSHADER
+//
+//
+// TEST_NAME can be a specific test name, or have a '*' in the end, which
+// indicates a prefix matching.
+//
+// Examples:
+// fails on both windows and mac (crash)
+// 91530 WIN : context_lost_restored = SKIP
+// 91530 MAC : context_lost_restored = SKIP
+// fails on windows using NVIDIA GPUs
+// 91533 WIN NVIDIA : gl_min_uniforms = FAIL
+// fails on Nexus5X with GLES backend (hangs)
+// 91531 NEXUS5X GLES : conformance_more_* = SKIP
+
+// Crashing Tests
+1920 NVIDIA D3D11 : dEQP-GLES31.functional.layout_binding.ubo.vertex_binding_max = SKIP
+1442 D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.builtin_gl_position = SKIP
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.builtin_gl_position = SKIP
+
+// Crashing Tests on Linux on Intel HD 630.
+2349 LINUX INTEL : dEQP-GLES31.functional.synchronization.in_invocation.image_* = SKIP
+2349 LINUX INTEL : dEQP-GLES31.functional.synchronization.inter_invocation.image_* = SKIP
+2349 LINUX INTEL : dEQP-GLES31.functional.compute.basic.copy_image_to_ssbo_small = SKIP
+2349 LINUX INTEL : dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_small = SKIP
+2349 LINUX INTEL : dEQP-GLES31.functional.compute.basic.image_barrier_multiple = SKIP
+
+// Failing Tests on Linux on Intel HD 630.
+2349 LINUX INTEL : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.program_binary = FAIL
+
+1442 D3D11 : dEQP-GLES31.functional.image_load_store.* = SKIP
+
+// Times out shader compilation because it uses so many resources.
+3445 : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.48 = SKIP
+
+// D3D11 Failing Tests
+// Below cases are failed due to binding multi-UAVs to a single buffer is not supported in D3D backend.
+// http://anglebug.com/3032
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer* = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer* = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer* = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer* = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer* = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer* = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer* = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer* = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer* = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.13 = FAIL
+3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer* = FAIL
+
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_atomic_counters_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_atomic_counter_buffer_size_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_atomic_counters* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_uniform_buffer_bindings_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_texture_image_units_* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.state_query.program.compute_work_group_size_get_programiv = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.async.case_4_log = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.async.case_5_callback = SKIP
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_2 = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_3 = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_9 = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_10 = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_27 = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_28 = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_2 = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_3 = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_9 = FAIL
+1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_10 = FAIL
+
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.float_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.float_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.float_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm4x8_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm4x8_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm2x16_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm2x16_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packhalf2x16_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackhalf2x16_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_lowp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_mediump_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_highp_geometry = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.state_query.program.geometry_shader_state_get_programiv = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.query.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.basic.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.conversion.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.emit.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.varying.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.layered.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.instanced.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.input.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.negative.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.shaders.linkage.es31.geometry.* = FAIL
+1941 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.geometry_shader = FAIL
+1941 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.geometry_shader = FAIL
+1941 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.geometry_shader = FAIL
+2826 D3D11 : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle.* = FAIL
+2826 D3D11 : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.* = FAIL
+2826 D3D11 : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.* = FAIL
+3865 D3D11 : dEQP-GLES31.functional.compute.basic.copy_image_to_ssbo_large = FAIL
+3865 D3D11 : dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_large = FAIL
+
+// Failing with dEQP roll
+3447 D3D11 : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.22 = FAIL
+3447 D3D11 : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.41 = FAIL
+
+// OPENGL Failing Tests
+1665 WIN NVIDIA OPENGL : dEQP-GLES31.functional.draw_indirect.negative.command_offset_not_in_buffer_unsigned32_wrap = FAIL
+1442 NVIDIA OPENGL : dEQP-GLES31.functional.fbo.no_attachments.maximums.all = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.referenced_by* = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.buffer_limited_query.resource_query = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.buffer_variable.* = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.program_input.* = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.program_output.* = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.* = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.* = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.* = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.uniform.random.* = FAIL
+1442 OPENGL : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.* = FAIL
+
+// An NVIDIA bug seems to occur when sending GL commands in a certain order to the driver
+2432 NVIDIA OPENGL : dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_api_change_binding_point = SKIP
+
+// OpenGL/D3D11 Failing Tests
+1442 OPENGL : dEQP-GLES31.functional.shaders.opaque_type_indexing.* = FAIL
+1442 D3D11 : dEQP-GLES31.functional.shaders.opaque_type_indexing.* = FAIL
+
+// OpenGL/D3D11/Vulkan Failing Tests
+1442 : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_100_calls_1k_invocations = FAIL
+
+// Waiting for Program pipeline functionality
+3570 : dEQP-GLES31.functional.state_query.integer.program_pipeline_binding_* = FAIL
+3570 : dEQP-GLES31.functional.state_query.program.program_separable_get_programiv = FAIL
+3570 : dEQP-GLES31.functional.state_query.program_pipeline.* = FAIL
+3570 : dEQP-GLES31.functional.debug.object_labels.program_pipeline = FAIL
+3570 : dEQP-GLES31.functional.separate_shader.* = FAIL
+
+// The following passes with Vulkan (with warning), but fails otherwise. We'll keep the file simple by expecting it to fail.
+2324 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.compute.program_not_active = FAIL
+2324 : dEQP-GLES31.functional.debug.negative_coverage.log.compute.program_not_active = FAIL
+2324 : dEQP-GLES31.functional.debug.negative_coverage.get_error.compute.program_not_active = FAIL
+2324 : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.draw_range_elements = FAIL
+2324 : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.draw_range_elements_incomplete_primitive = FAIL
+
+// These tests are failing because of compile errors with SSBOs in compute shaders.
+1951 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.compute.exceed_shared_memory_size_limit = FAIL
+1951 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.compute.exceed_shared_memory_size_limit = FAIL
+1951 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.compute.exceed_shared_memory_size_limit = FAIL
+
+1442 D3D11 : dEQP-GLES31.functional.stencil_texturing.* = SKIP
+// TODO(xinghua.cao@intel.com): FAIL expectation instead of SKIP should be sufficient for OpenGL, but the
+// test expectations parser doesn't support having FAIL for GL and SKIP for D3D with the same test filter.
+
+1729 D3D11 : dEQP-GLES31.functional.atomic_counter.* = SKIP
+1951 D3D11 : dEQP-GLES31.functional.layout_binding.ssbo.* = SKIP
+1951 D3D11 : dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.* = SKIP
+1442 D3D11 : dEQP-GLES31.functional.program_interface_query.* = SKIP
+1442 D3D11 : dEQP-GLES31.functional.synchronization.* = SKIP
+1442 D3D11 : dEQP-GLES31.functional.layout_binding.image.* = SKIP
+// This case is skipped since it uses atomic counter builtin functions which haven't been implemented.
+1729 D3D11 : dEQP-GLES31.functional.state_query.program.active_atomic_counter_buffers_get_programiv = SKIP
+
+// Vulkan Android failures
+4110 ANDROID VULKAN : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_fwidth = FAIL
+4110 ANDROID VULKAN : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdy = FAIL
+4110 ANDROID VULKAN : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdx = FAIL
+4110 ANDROID VULKAN : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_max_samples_dfdy = FAIL
+4110 ANDROID VULKAN : dEQP-GLES31.functional.shaders.helper_invocation.value.lines_8_samples = FAIL
+4110 ANDROID VULKAN : dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_max_samples = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.value.lines_8_samples = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.value.points_8_samples = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.value.triangles_max_samples = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_8_samples_dfdy = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_dfdx = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.derivate.lines_8_samples_fwidth = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_lines_8_samples_dfdy = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_dfdx = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.derivate.points_8_samples_fwidth = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.derivate.wide_points_8_samples_dfdy = FAIL
+4110 SWIFTSHADER : dEQP-GLES31.functional.shaders.helper_invocation.derivate.triangles_max_samples_dfdx = FAIL
+
+// Debug failures that occur on Android:
+3590 VULKAN ANDROID : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameterf = FAIL
+3590 VULKAN ANDROID : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameterfv = FAIL
+
+// Passing on recent drivers:
+3726 VULKAN ANDROID : dEQP-GLES31.functional.ssbo.layout.* = FAIL
+3726 VULKAN ANDROID : dEQP-GLES31.functional.atomic_counter.* = FAIL
+3726 VULKAN ANDROID : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.*atomic_counter* = FAIL
+3726 VULKAN ANDROID : dEQP-GLES31.functional.compute.basic.atomic_counter* = FAIL
+
+// Validation error on SPIR-V (but only on Android, possibly related to issue 2703)
+3882 VULKAN ANDROID : dEQP-GLES31.functional.uniform_location.nested_array.*sampler* = FAIL
+
+// Arrays of opaque types as function parameters (possibly related to issue 3882)
+2703 VULKAN ANDROID : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_literal_vertex = FAIL
+2703 VULKAN ANDROID : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_literal_fragment = FAIL
+2703 VULKAN ANDROID : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_literal_compute = FAIL
+2703 VULKAN ANDROID : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_expression_vertex = FAIL
+2703 VULKAN ANDROID : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_expression_fragment = FAIL
+2703 VULKAN ANDROID : dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_expression_compute = FAIL
+
+// General Vulkan failures
+
+// Front-end query bugs:
+3596 VULKAN : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_data_size.* = FAIL
+
+// Shader support:
+3565 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.texture_size.samples_* = SKIP
+
+// SSBO synchronization:
+4097 VULKAN PIXEL2ORXL : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_alias_overwrite = FAIL
+
+// Block name matching failure:
+3459 VULKAN : dEQP-GLES31.functional.shaders.linkage.es31.shader_storage_block.mismatch_with_and_without_instance_name = FAIL
+
+// Tessellation geometry interaction:
+3572 VULKAN : dEQP-GLES31.functional.tessellation_geometry_interaction.* = FAIL
+
+// Framebuffer without attachments:
+3579 ANDROID VULKAN : dEQP-GLES31.functional.fbo.no_attachments.* = SKIP
+
+// Debug:
+3590 VULKAN : dEQP-GLES31.functional.debug.negative_coverage.*exceed_shared_memory_size_limit = FAIL
+
+// Stencil textures (some missing support for base level):
+3683 VULKAN PIXEL2ORXL : dEQP-GLES31.functional.stencil_texturing.format.* = FAIL
+3683 VULKAN PIXEL2ORXL : dEQP-GLES31.functional.stencil_texturing.misc.compare_mode_effect = FAIL
+
+// Need to support non-color when staging image updates
+4080 ANDROID VULKAN : dEQP-GLES31.functional.stencil_texturing.misc.base_level = SKIP
+
+// Multisampled textures:
+3565 VULKAN : dEQP-GLES31.functional.texture.multisample.* = SKIP
+3565 VULKAN : dEQP-GLES31.functional.state_query.texture*multisample.* = SKIP
+
+// Vulkan creates the image view with the same format as the texture.
+3885 VULKAN : dEQP-GLES31.functional.image_load_store.*.format_reinterpret.* = FAIL
+
+// Cannot create 2D (array) view of 3D texture.
+3886 VULKAN : dEQP-GLES31.functional.image_load_store.3d.*layer = FAIL
+
+// Inactive SSBOs with flexible array member (about 20% of these tests are affected):
+3714 VULKAN : dEQP-GLES31.functional.ssbo.layout.random.* = FAIL
+
+// OpenGL ES 3.1 conformance failures
+4098 SWIFTSHADER : dEQP-GLES31.functional.compute.basic.write_multiple_unsized_arr_multiple_groups = FAIL
+4098 SWIFTSHADER : dEQP-GLES31.functional.compute.basic.write_multiple_unsized_arr_single_invocation = FAIL
+
+4099 SWIFTSHADER : dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex.index_neg_* = FAIL
+
+4100 SWIFTSHADER : dEQP-GLES31.functional.draw_indirect.random.30 = FAIL
+4100 SWIFTSHADER : dEQP-GLES31.functional.draw_indirect.random.39 = FAIL
+
+4101 SWIFTSHADER : dEQP-GLES31.functional.multisample.default_framebuffer.sample_position = FAIL
+
+4102 SWIFTSHADER : dEQP-GLES31.functional.state_query.integer.max_framebuffer_height_getfloat = FAIL
+4102 SWIFTSHADER : dEQP-GLES31.functional.state_query.integer.max_framebuffer_height_getinteger = FAIL
+4102 SWIFTSHADER : dEQP-GLES31.functional.state_query.integer.max_framebuffer_height_getinteger64 = FAIL
+4102 SWIFTSHADER : dEQP-GLES31.functional.state_query.integer.max_framebuffer_width_getfloat = FAIL
+4102 SWIFTSHADER : dEQP-GLES31.functional.state_query.integer.max_framebuffer_width_getinteger = FAIL
+4102 SWIFTSHADER : dEQP-GLES31.functional.state_query.integer.max_framebuffer_width_getinteger64 = FAIL
+
+4103 SWIFTSHADER : dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.* = FAIL
+
+4104 SWIFTSHADER : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_float = FAIL
+4104 SWIFTSHADER : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_integer = FAIL
+4104 SWIFTSHADER : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_float = FAIL
+4104 SWIFTSHADER : dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_integer = FAIL
+
+4105 SWIFTSHADER : dEQP-GLES31.functional.stencil_texturing.format.depth24_stencil8_cube = FAIL
+4105 SWIFTSHADER : dEQP-GLES31.functional.stencil_texturing.format.depth32f_stencil8_cube = FAIL
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_TestExpectations
new file mode 100644
index 0000000..b58c083
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_TestExpectations
@@ -0,0 +1,597 @@
+// Copyright 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.
+
+// This file contains a list of defective dEQP conformance tests. The expected
+// format is:
+// {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
+//
+// MODIFIERS can be a combination of the below list, combined with a logical AND:
+// WIN XP VISTA WIN7 WIN8 WIN10
+// MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
+// LINUX CHROMEOS ANDROID
+// NVIDIA AMD INTEL
+// DEBUG RELEASE
+// D3D9 D3D11 OPENGL GLES VULKAN
+// NEXUS5X PIXEL2ORXL
+// QUADROP400
+//
+//
+// TEST_NAME can be a specific test name, or have a '*' in the end, which
+// indicates a prefix matching.
+//
+// Examples:
+// fails on both windows and mac (crash)
+// 91530 WIN : context_lost_restored = SKIP
+// 91530 MAC : context_lost_restored = SKIP
+// fails on windows using NVIDIA GPUs
+// 91533 WIN NVIDIA : gl_min_uniforms = FAIL
+// fails on Nexus5X with GLES backend (hangs)
+// 91531 NEXUS5X GLES : conformance_more_* = SKIP
+
+// Don't run these tests for faster turnover
+1101 : dEQP-GLES3.functional.flush_finish.* = SKIP
+
+// TODO(jmadill): Figure out why these fail on the bots, but not locally.
+1108 WIN D3D11 : dEQP-GLES3.functional.shaders.struct.local.dynamic_loop_struct_array_fragment = FAIL
+1094 WIN D3D11 : dEQP-GLES3.functional.shaders.invariance.highp.loop_2 = FAIL
+1094 WIN D3D11 : dEQP-GLES3.functional.shaders.invariance.mediump.loop_2 = FAIL
+
+// We can't support distinct texture sizes in D3D11.
+1097 WIN D3D11 : dEQP-GLES3.functional.fbo.completeness.size.distinct = FAIL
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Temporary entries: they should be removed once the bugs are fixed.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Failures related to using a depth/stencil enabled backbuffer on Windows / NVIDIA.
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.invariance.highp.common_subexpression_1 = FAIL
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.invariance.mediump.common_subexpression_1 = FAIL
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.invariance.lowp.common_subexpression_1 = FAIL
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.render_all = SKIP
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.render_depth_stencil = SKIP
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.bind_depth_stencil = SKIP
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.draw_framebuffer_all = SKIP
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.read_framebuffer_all = SKIP
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.bind_all = SKIP
+2428 D3D11 NVIDIA : dEQP-GLES3.functional.polygon_offset.default_render_with_units = SKIP
+
+// Tests were being hidden by flakiness (anglebug.com/3271)
+3329 D3D11 NVIDIA : dEQP-GLES3.functional.transform_feedback.interpolation.flat.* = FAIL
+3329 D3D11 NVIDIA : dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles.* = FAIL
+3329 D3D11 NVIDIA : dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles.* = FAIL
+
+// Missing the SampleCmp instruction in vertex shaders.
+1435 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturelod.sampler2dshadow_vertex = FAIL
+1435 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturelodoffset.sampler2dshadow_vertex = FAIL
+1435 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.sampler2dshadow_vertex = FAIL
+1435 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojlodoffset.sampler2dshadow_vertex = FAIL
+
+// SampleCmp is missing gradient/offset parameters in HLSL.
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturelod.sampler2dshadow_fragment = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturelodoffset.sampler2dshadow_fragment = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.sampler2dshadow_fragment = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojlodoffset.sampler2dshadow_fragment = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.sampler2dshadow_vertex = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.sampler2dshadow_fragment = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.sampler2darrayshadow_vertex = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.sampler2darrayshadow_fragment = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2dshadow_vertex = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2dshadow_fragment = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2darrayshadow_vertex = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2darrayshadow_fragment = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad.sampler2dshadow_vertex = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad.sampler2dshadow_fragment = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.sampler2dshadow_vertex = FAIL
+1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.sampler2dshadow_fragment = FAIL
+
+// DrawBuffers test failing on D3D11.
+3298 WIN D3D11 : dEQP-GLES3.functional.shaders.fragdata.draw_buffers = FAIL
+
+// TODO(jmadill, cwallez): triage the failures below into permanent and temporary failures
+
+// Quadro P400
+// TODO(jmadill): Narrow to P400 device only: 0x1CB3.
+2222 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.functions.control_flow.return_in_nested_loop_fragment = FAIL
+2222 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.functions.control_flow.return_in_nested_loop_vertex = FAIL
+2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.linear_nearest = FAIL
+2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.nearest_nearest = FAIL
+2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.linear_nearest = FAIL
+2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.nearest_nearest = FAIL
+2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.cube.min_lod.linear_nearest = FAIL
+2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.cube.min_lod.nearest_nearest = FAIL
+
+// Flaky on Win7 D3D11 NVIDIA
+4070 WIN7 D3D11 NVIDIA : dEQP-GLES3.functional.rasterization.flatshading.triangles = FAIL
+
+// Vertex attribute aliasing is not supported on D3D
+3467 D3D9 : dEQP-GLES3.functional.attribute_location.bind_aliasing.cond* = FAIL
+3467 D3D9 : dEQP-GLES3.functional.attribute_location.bind_aliasing.max_cond* = FAIL
+3467 D3D11 : dEQP-GLES3.functional.attribute_location.bind_aliasing.cond* = FAIL
+3467 D3D11 : dEQP-GLES3.functional.attribute_location.bind_aliasing.max_cond* = FAIL
+
+// Windows and Linux failures
+1095 LINUX : dEQP-GLES3.functional.texture.mipmap.2d.projected.* = FAIL
+
+// Windows only failure
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_* = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops.* = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.depth_stencil.write_mask.* = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.depth_stencil.random.* = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_one_minus_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_one_minus_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_one_minus_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_one_minus_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_one_minus_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_one_minus_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_one_minus_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_one_minus_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.random.* = FAIL
+1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.interaction.basic_shader.* = FAIL
+1101 WIN D3D11 : dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units = FAIL
+1101 WIN D3D11 : dEQP-GLES3.functional.polygon_offset.fixed24_render_with_units = FAIL
+1101 WIN D3D11 : dEQP-GLES3.functional.lifetime.attach.deleted_input.buffer_vertex_array = FAIL
+
+// Basic line transform feedback tests flaky on Windows.
+2676 WIN D3D11 : dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines.* = FAIL
+2676 WIN D3D11 : dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines.* = FAIL
+
+// Very small threshold issue. Could upstream a higher tolerance to dEQP.
+2323 WIN D3D11 : dEQP-GLES3.functional.texture.units.2_units.only_cube.7 = FAIL
+
+// Blit related failures on D3D11
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_x = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_y = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_x = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_y = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_linear = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_dst_x_linear = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_dst_y_linear = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_dst_x_linear = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_dst_y_linear = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_x_linear = FAIL
+3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_y_linear = FAIL
+
+// Windows AMD specific failures
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_scale = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_stencil_only = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r11f_g11f_b10f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rg32f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rg16f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r32f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r16f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rgb16f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rg8 = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rgb10_a2 = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rgba16f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r8 = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgba32f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgba16f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r11f_g11f_b10f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg32f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg16f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r32f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r16f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgb16f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg8 = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r8 = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgb10_a2 = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgb16f = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.filtering.cube.formats.rgb10_a2_nearest_mipmap_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.filtering.cube.formats.rgb565_nearest_mipmap_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.filtering.cube.formats.rgba16f_nearest_mipmap_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.nearest_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.linear_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.2d.max_lod.nearest_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.2d.max_lod.linear_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.nearest_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.linear_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.3d.max_lod.nearest_nearest = FAIL
+1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.3d.max_lod.linear_nearest = FAIL
+
+// D3D11 Intel specific
+
+1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.only_cube.6 = FAIL
+1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.only_2d_array.8 = FAIL
+1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.only_3d.8 = FAIL
+1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.mixed.0 = FAIL
+1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.mixed.8 = FAIL
+1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.mixed.9 = FAIL
+1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.4_units.only_3d.3 = FAIL
+2349 D3D11 INTEL : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.nearest_nearest = FAIL
+2349 D3D11 INTEL : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.linear_nearest = FAIL
+2349 D3D11 INTEL : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.nearest_nearest = FAIL
+2349 D3D11 INTEL : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.linear_nearest = FAIL
+2349 D3D11 INTEL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines = FAIL
+2349 D3D11 INTEL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.interpolation.lines = FAIL
+2349 D3D11 INTEL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines = FAIL
+2349 D3D11 INTEL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines = FAIL
+
+// Failing Tests on Windows and Mac on Intel HD 630
+2137 WIN INTEL : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.* = FAIL
+2137 MAC INTEL : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.* = FAIL
+
+// Linux only failures
+
+// UBO tests trigger crashes when getting the program info log, skip them until this is fixed.
+1323 LINUX OPENGL : dEQP-GLES3.functional.ubo.* = SKIP
+
+1323 LINUX OPENGL : dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f = FAIL
+1323 LINUX OPENGL : dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8 = FAIL
+1323 LINUX OPENGL : dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f = FAIL
+1323 LINUX OPENGL : dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8 = FAIL
+1323 LINUX OPENGL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.points = FAIL
+
+// While loops with 'continue' seem flaky on Linux. (Possibly all GL renderers)
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.conditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.conditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.unconditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.unconditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.only_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.only_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.double_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.double_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.mixed_break_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.mixed_break_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.conditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.conditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.unconditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.unconditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.only_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.only_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.double_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.double_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.mixed_break_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.mixed_break_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.conditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.conditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.unconditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.unconditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.only_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.only_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.double_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.double_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.mixed_break_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.mixed_break_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.conditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.conditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.unconditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.unconditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.only_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.only_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.double_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.double_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.mixed_break_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.mixed_break_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.conditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.conditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.unconditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.unconditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.only_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.only_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.double_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.double_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.mixed_break_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.mixed_break_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.conditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.conditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.unconditional_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.unconditional_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.only_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.only_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.double_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.double_continue_fragment = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.mixed_break_continue_vertex = FAIL
+1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.mixed_break_continue_fragment = FAIL
+
+// Polygon offset failures
+3304 LINUX OPENGL : dEQP-GLES3.functional.polygon_offset.float32_factor_1_slope = FAIL
+3304 LINUX OPENGL : dEQP-GLES3.functional.polygon_offset.float32_result_depth_clamp = FAIL
+
+// Flaky test
+3305 LINUX OPENGL : dEQP-GLES3.functional.shaders.builtin_functions.common.uintbitstofloat.uint_highp_vertex = FAIL
+
+// Linux Intel specific
+2349 LINUX OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.default_framebuffer* = FAIL
+
+// Mac failures (overbroad suppresions)
+3466 MAC OPENGL : dEQP-GLES3.functional.attribute_location.bind_aliasing.cond* = SKIP
+3466 MAC OPENGL : dEQP-GLES3.functional.attribute_location.bind_aliasing.max_cond* = SKIP
+2137 MAC OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.* = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_* = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.implementation_limits.compressed_texture_formats = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.implementation_limits.num_compressed_texture_formats = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.primitive_restart.* = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.linkage.varying.rules.vertex_declare_fragment_use = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.function_parameter_hides_struct_type_fragment = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.function_parameter_hides_struct_type_vertex = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.local_int_variable_hides_struct_type_fragment = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.local_int_variable_hides_struct_type_vertex = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.local_struct_variable_hides_struct_type_fragment = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.local_struct_variable_hides_struct_type_vertex = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.state_query.integers.compressed_texture_formats_getfloat = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.state_query.integers.compressed_texture_formats_getinteger = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.state_query.integers.compressed_texture_formats_getinteger64 = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.dither.disabled.* = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_* = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.arrays.complex_expression.and_short_circuits_* = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.arrays.complex_expression.or_short_circuits_* = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.fragdata.valid_static_index = FAIL
+2137 MAC OPENGL : dEQP-GLES3.functional.shaders.loops.short_circuit.* = FAIL
+3317 MAC OPENGL : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_linear = FAIL
+
+// ETC compressed formats not supported
+3853 MAC OPENGL : dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage* = FAIL
+3853 MAC OPENGL : dEQP-GLES3.functional.negative_api.texture.generatemipmap = FAIL
+
+// Mac AMD failures
+2137 MAC OPENGL AMD : dEQP-GLES3.functional.clipping.point.wide_point_clip = FAIL
+2137 MAC OPENGL AMD : dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center = FAIL
+2137 MAC OPENGL AMD : dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner = FAIL
+2137 MAC OPENGL AMD : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_nearest = FAIL
+2137 MAC OPENGL AMD : dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_* = FAIL
+2137 MAC OPENGL AMD : dEQP-GLES3.functional.texture.mipmap.2d.projected.* = FAIL
+2137 MAC OPENGL AMD : dEQP-GLES3.functional.transform_feedback.* = FAIL
+
+3317 MAC OPENGL AMD : dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.* = FAIL
+3317 MAC OPENGL AMD : dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.isampler3d_vertex = FAIL
+3317 MAC OPENGL AMD : dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.usampler3d_vertex = FAIL
+
+// Mac Intel crashes
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.discard.function_static_loop_never = SKIP
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.discard.dynamic_loop_never = SKIP
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.discard.static_loop_never = SKIP
+
+// Mac Intel failures
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.color_clear.* = FAIL
+// All the out of bounds variants fail.
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_y = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_y = FAIL
+// Fails for all integer formats
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.completeness.attachment_combinations.none_rbo_none_none = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.completeness.attachment_combinations.none_tex_none_none = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.polygon_offset.default_render_with_units = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.polygon_offset.fixed24_render_with_units = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_* = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_* = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.lowp.common_subexpression_1 = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.lowp.common_subexpression_3 = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.mediump.common_subexpression_1 = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.mediump.common_subexpression_3 = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.highp.common_subexpression_1 = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.highp.common_subexpression_3 = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset.usampler2d_fragment = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset.usampler2d_vertex = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.usampler3d_fragment = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.usampler3d_fragment = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.usamplercube_fragment = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.usamplercube_vertex = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturelod.usamplercube_fragment = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturelod.usamplercube_vertex = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.usampler3d_fragment = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad.usampler3d_fragment = FAIL
+// Fails the integer npot cases = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.format.sized.cube.* = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_alpha = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_luminance = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_luminance_alpha = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_rgb = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_rgba = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.random_teximage2d.2d_5 = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.teximage3d_* = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.texsubimage3d_* = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.ubo.* = FAIL
+2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset.* = FAIL
+
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_x = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_x = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_x = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_x = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_x = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_x = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_x = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_y = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_* = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_* = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_* = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_* = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.mipmap.cube.max_level.linear_nearest = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.vertex.2d_array.filtering.linear_nearest_* = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.vertex.2d.filtering.linear_nearest_* = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_* = FAIL
+3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.vertex.cube.filtering.linear_nearest_* = FAIL
+
+3531 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.invalidate.format.rgb8 = FAIL
+3531 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.render.resize.tex2d_rgb16f = FAIL
+3531 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.render.resize.tex2d_rgb8 = FAIL
+
+// Android only failures
+1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0.red_half_float_oes = FAIL
+1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0.rg_half_float_oes = FAIL
+1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil.depth_stencil_unsigned_int_24_8 = FAIL
+1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.depth_stencil_unsigned_int_24_8 = FAIL
+1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_short = FAIL
+1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_int = FAIL
+1964 ANDROID GLES : dEQP-GLES3.functional.occlusion_query.* = FAIL
+1962 ANDROID GLES : dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.basic_2_fragment = FAIL
+1962 ANDROID GLES : dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.basic_2_vertex = FAIL
+1962 ANDROID GLES : dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.defined_macro_undef_fragment = FAIL
+1962 ANDROID GLES : dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.defined_macro_undef_vertex = FAIL
+1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.conditional_return_always_fragment = FAIL
+1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.conditional_return_always_vertex = FAIL
+1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.output_write_always_fragment = FAIL
+1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.output_write_always_vertex = FAIL
+1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.output_write_in_func_always_fragment = FAIL
+1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.output_write_in_func_always_vertex = FAIL
+1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.2d.generate.a8_* = FAIL
+1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.2d.generate.l8_* = FAIL
+1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.2d.generate.la88_* = FAIL
+1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.cube.generate.a8_* = FAIL
+1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.cube.generate.l8_* = FAIL
+1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.cube.generate.la88_* = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.* = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.basic_types.separate.* = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.interpolation.* = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.point_size.* = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.position.* = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.5 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.8 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.10 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.points.6 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.points.7 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.2 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.lines.4 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.lines.6 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.lines.8 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.points.4 = FAIL
+1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.triangles.4 = FAIL
+2629 ANDROID GLES : dEQP-GLES3.functional.shaders.struct.local.array_member_equality_fragment = SKIP
+2629 ANDROID GLES : dEQP-GLES3.functional.shaders.struct.local.array_member_equality_vertex = SKIP
+2627 ANDROID GLES : dEQP-GLES3.functional.shaders.arrays.complex_expression.and_short_circuits_* = FAIL
+2627 ANDROID GLES : dEQP-GLES3.functional.shaders.arrays.complex_expression.or_short_circuits_* = FAIL
+2628 ANDROID GLES : dEQP-GLES3.functional.shaders.indexing.moredynamic.user_defined_fncall_inout_parameter_fragment = FAIL
+2628 ANDROID GLES : dEQP-GLES3.functional.shaders.indexing.moredynamic.user_defined_fncall_inout_parameter_with_index_with_side_effects_fragment = FAIL
+2628 ANDROID GLES : dEQP-GLES3.functional.shaders.indexing.moredynamic.user_defined_fncall_out_parameter_fragment = FAIL
+2627 ANDROID GLES : dEQP-GLES3.functional.shaders.loops.short_circuit.* = FAIL
+
+2567 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.red_unsigned_byte = FAIL
+2567 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.rg_unsigned_byte = FAIL
+2567 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil.red_unsigned_byte = FAIL
+2567 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil.rg_unsigned_byte = FAIL
+
+// Nexus 5x failures
+3308 NEXUS5X GLES : dEQP-GLES3.functional.attribute_location.bind_aliasing.cond* = FAIL
+3308 NEXUS5X GLES : dEQP-GLES3.functional.attribute_location.bind_aliasing.max_cond* = FAIL
+3308 NEXUS5X GLES : dEQP-GLES3.functional.polygon_offset.default_result_depth_clamp = FAIL
+3308 NEXUS5X GLES : dEQP-GLES3.functional.polygon_offset.fixed24_result_depth_clamp = FAIL
+3308 NEXUS5X GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.3 = FAIL
+3308 NEXUS5X GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.8 = FAIL
+3308 NEXUS5X GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.10 = FAIL
+2322 NEXUS5X GLES : dEQP-GLES3.functional.shaders.metamorphic.* = SKIP
+
+// Seems to fail on all desktop GL
+2960 OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.srgb8_alpha8 = FAIL
+2960 OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.srgb8_alpha8_linear_out_of_bounds_blit_to_default = FAIL
+2960 OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.srgb8_alpha8_linear_scale_blit_to_default = FAIL
+2960 OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.srgb8_alpha8_nearest_scale_blit_to_default = FAIL
+
+// Fails on Windows + Linux.
+2222 OPENGL NVIDIA : dEQP-GLES3.functional.fbo.completeness.samples.rbo2_rbo2_rbo0 = FAIL
+
+// General Vulkan failures
+
+// Tests failing due to the "flat" qualifier in the shader:
+3677 VULKAN : dEQP-GLES3.functional.fragment_out.basic.int.* = FAIL
+3677 VULKAN : dEQP-GLES3.functional.fragment_out.basic.uint.* = FAIL
+3677 VULKAN : dEQP-GLES3.functional.fragment_out.array.int* = FAIL
+3677 VULKAN : dEQP-GLES3.functional.fragment_out.array.uint* = FAIL
+3677 VULKAN : dEQP-GLES3.functional.fragment_out.random.* = FAIL
+
+// NVIDIA Depth/Stencil textures:
+3970 VULKAN NVIDIA : dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f = FAIL
+3970 VULKAN NVIDIA : dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8 = FAIL
+3970 VULKAN NVIDIA : dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f = FAIL
+3970 VULKAN NVIDIA : dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8 = FAIL
+
+// Polygon offset:
+3970 VULKAN NVIDIA : dEQP-GLES3.functional.polygon_offset.float32_result_depth_clamp = FAIL
+3970 VULKAN NVIDIA : dEQP-GLES3.functional.polygon_offset.float32_factor_1_slope = FAIL
+
+// Flat shading:
+3430 VULKAN : dEQP-GLES3.functional.rasterization.flatshading.* = FAIL
+
+// Misc unimplemented:
+
+// Failures on newer NVIDIA drivers (411.95) and passes on older drivers (388.16). Passes on 418.12 on Linux.
+2976 VULKAN NVIDIA : dEQP-GLES3.functional.shaders.invariance.* = FAIL
+// Fails on 431.02 NVIDIA driver
+3748 VULKAN WIN NVIDIA : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.* = FAIL
+
+// Android Vulkan failures
+3306 ANDROID VULKAN : dEQP-GLES3.functional.polygon_offset.* = FAIL
+2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines = FAIL
+2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines = FAIL
+2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.primitives.line* = FAIL
+2808 ANDROID VULKAN : dEQP-GLES3.functional.shaders.builtin_variable.fragcoord_w = FAIL
+
+// Pixel driver issues
+4024 PIXEL2ORXL VULKAN : dEQP-GLES3.functional.draw.random.5 = SKIP
+4024 PIXEL2ORXL VULKAN : dEQP-GLES3.functional.draw.random.49 = SKIP
+4024 PIXEL2ORXL VULKAN : dEQP-GLES3.functional.draw.random.96 = FAIL
+
+// Fixed in later driver versions.
+2727 VULKAN ANDROID : dEQP-GLES3.functional.shaders.builtin_variable.pointcoord = FAIL
+
+// New or broken formats in ES 3.0, may be it relates to VK_IMAGE_USAGE_STORAGE_BIT
+3816 VULKAN PIXEL2ORXL : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba16* = FAIL
+3816 VULKAN PIXEL2ORXL : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb16* = FAIL
+3816 VULKAN PIXEL2ORXL : dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg32* = FAIL
+
+// Fails only with SwiftShader:
+
+// These only fail for a 565 config
+4016 SWIFTSHADER : dEQP-GLES3.functional.fragment_ops.interaction.basic_shader.27 = FAIL
+4016 SWIFTSHADER : dEQP-GLES3.functional.fragment_ops.interaction.basic_shader.80 = FAIL
+
+// These only fail on Android
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_both = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_fragment = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_vertex = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_both = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_fragment = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_vertex = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_both = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_fragment = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_vertex = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_both = FAIL
+4045 SWIFTSHADER : dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_fragment = FAIL
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles2_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles2_TestExpectations
new file mode 100644
index 0000000..2146add
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles2_TestExpectations
@@ -0,0 +1,33 @@
+// Copyright 2019 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.
+
+// This file contains a list of defective dEQP conformance tests. The expected
+// format is:
+// {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
+//
+// MODIFIERS can be a combination of the below list, combined with a logical AND:
+// WIN XP VISTA WIN7 WIN8 WIN10
+// MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
+// LINUX CHROMEOS ANDROID
+// NVIDIA AMD INTEL
+// DEBUG RELEASE
+// D3D9 D3D11 OPENGL GLES VULKAN
+// NEXUS5X PIXEL2ORXL
+// QUADROP400
+//
+//
+// TEST_NAME can be a specific test name, or have a '*' in the end, which
+// indicates a prefix matching.
+//
+// Examples:
+// fails on both windows and mac (crash)
+// 91530 WIN : context_lost_restored = SKIP
+// 91530 MAC : context_lost_restored = SKIP
+// fails on windows using NVIDIA GPUs
+// 91533 WIN NVIDIA : gl_min_uniforms = FAIL
+// fails on Nexus5X with GLES backend (hangs)
+// 91531 NEXUS5X GLES : conformance_more_* = SKIP
+
+// Depth/stencil related failures.
+3457 VULKAN : KHR-GLES2.core.internalformat.texture2d.depth_stencil_unsigned_int_24_8_depth_stencil = FAIL
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles31_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles31_TestExpectations
new file mode 100644
index 0000000..f8c825e
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles31_TestExpectations
@@ -0,0 +1,134 @@
+// Copyright 2019 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.
+
+// This file contains a list of defective dEQP conformance tests. The expected
+// format is:
+// {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
+//
+// MODIFIERS can be a combination of the below list, combined with a logical AND:
+// WIN XP VISTA WIN7 WIN8 WIN10
+// MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
+// LINUX CHROMEOS ANDROID
+// NVIDIA AMD INTEL
+// DEBUG RELEASE
+// D3D9 D3D11 OPENGL GLES VULKAN
+// NEXUS5X PIXEL2ORXL
+// QUADROP400
+//
+//
+// TEST_NAME can be a specific test name, or have a '*' in the end, which
+// indicates a prefix matching.
+//
+// Examples:
+// fails on both windows and mac (crash)
+// 91530 WIN : context_lost_restored = SKIP
+// 91530 MAC : context_lost_restored = SKIP
+// fails on windows using NVIDIA GPUs
+// 91533 WIN NVIDIA : gl_min_uniforms = FAIL
+// fails on Nexus5X with GLES backend (hangs)
+// 91531 NEXUS5X GLES : conformance_more_* = SKIP
+
+// For now we only log Vulkan test expectations. More back-ends can follow as we need them.
+
+// Android Vulkan expectations
+
+// General Vulkan expectations
+
+// Limits:
+// GL_MIN/MAX_PROGRAM_TEXTURE_GATHER_OFFSET not set.
+3605 VULKAN : KHR-GLES31.core.texture_gather.* = FAIL
+
+// Dispatch indirect:
+3601 VULKAN : KHR-GLES31.core.compute_shader* = SKIP
+
+// Multisampled textures:
+3565 VULKAN : KHR-GLES31.core.texture_storage_multisample.* = SKIP
+
+// 2D array and 3D textures for compute shaders:
+3810 VULKAN : KHR-GLES31.core.layout_binding.sampler2DArray_layout_binding_texture_ComputeShader = SKIP
+3810 VULKAN : KHR-GLES31.core.layout_binding.sampler3D_layout_binding_texture_ComputeShader = SKIP
+
+// Program Pipeline Objects:
+3570 VULKAN : KHR-GLES31.core.shader_atomic_counters.advanced-usage-many-draw-calls2 = FAIL
+3570 VULKAN : KHR-GLES31.core.shader_atomic_counters.advanced-usage-many-dispatches = FAIL
+
+// Separate shader objects:
+3570 VULKAN : KHR-GLES31.core.sepshaderobjs* = FAIL
+
+// Shader support:
+3569 : KHR-GLES31.core.shader_integer_mix.* = FAIL
+3569 : KHR-GLES31.core.shader_image* = SKIP
+3569 : KHR-GLES31.core.shader_macros* = FAIL
+3569 : KHR-GLES31.core.shader_bitfield_operation.frexp.* = SKIP
+3569 : KHR-GLES31.core.shader_bitfield_operation.uaddCarry.* = SKIP
+3569 : KHR-GLES31.core.shader_bitfield_operation.usubBorrow.* = SKIP
+3569 : KHR-GLES31.core.shader_bitfield_operation.umulExtended.* = SKIP
+3569 : KHR-GLES31.core.shader_bitfield_operation.imulExtended.* = SKIP
+
+// Trigger Vulkan validation errors:
+4145 VULKAN : KHR-GLES31.core.vertex_attrib_binding.basic-* = FAIL
+
+// Crashes in libnvidia-glvkspirv.so, fixed in newer drivers
+4128 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-cs-*-matC* = SKIP
+4128 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-vs-*-matC* = SKIP
+4128 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-fs-*-matC* = SKIP
+4128 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-cs-*-struct* = SKIP
+4128 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-vs-*-struct* = SKIP
+4128 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-fs-*-struct* = SKIP
+4128 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-cs-*-matR* = SKIP
+4128 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-vs-*-matR* = SKIP
+4128 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-fs-*-matR* = SKIP
+
+// Bug with binding the zero buffer and glBindBufferRange:
+4147 : KHR-GLES31.core.shader_storage_buffer_object.basic-binding = FAIL
+
+// Error with detecting some atomic counter buffer uses:
+4150 : KHR-GLES31.core.shader_storage_buffer_object.basic-atomic-case3-cs = FAIL
+4150 : KHR-GLES31.core.shader_storage_buffer_object.basic-atomic-case3-vsfs = FAIL
+
+// Unimplemented glValidateCreateShaderProgramv:
+4146 : KHR-GLES31.core.shader_storage_buffer_object.basic-syntaxSSO = FAIL
+4146 : KHR-GLES31.core.vertex_attrib_binding.advanced-bindingUpdate = FAIL
+4146 : KHR-GLES31.core.vertex_attrib_binding.advanced-largeStrideAndOffsetsNewAndLegacyAPI = FAIL
+
+// Draw indirect:
+3564 VULKAN : KHR-GLES31.core.draw_indirect.* = SKIP
+
+// Explicit uniform locations: triggers ASSERT.
+4132 : KHR-GLES31.core.explicit_uniform_location.* = SKIP
+
+// Program interface query.
+3596 VULKAN : KHR-GLES31.core.program_interface_query.* = FAIL
+
+// Framebuffer without attachments:
+3579 VULKAN : KHR-GLES31.core.framebuffer_no_attachments.api = FAIL
+
+// Arrays-of-arrays as vertex inputs:
+4148 : KHR-GLES31.core.arrays_of_arrays.InteractionInterfaceArrays2 = FAIL
+
+// Blend equations:
+3586 VULKAN : KHR-GLES31.core.blend_equation_advanced.* = SKIP
+
+// Storage image front-end crash when unbinding images (given texture 0)
+4124 VULKAN : KHR-GLES31.core.layout_binding.sampler2D_layout_binding_texture_ComputeShader = SKIP
+4124 VULKAN : KHR-GLES31.core.layout_binding.block_layout_binding_block_ComputeShader = SKIP
+4124 VULKAN : KHR-GLES31.core.layout_binding.buffer_layout_binding_atomicAdd_ComputeShader = SKIP
+4124 VULKAN : KHR-GLES31.core.layout_binding.atomic_uint_layout_binding_atomic_ComputeShader = SKIP
+4124 VULKAN : KHR-GLES31.core.layout_binding.image2D_layout_binding_imageLoad_ComputeShader = SKIP
+4124 VULKAN : KHR-GLES31.core.layout_binding.image2D_layout_binding_imageLoad_FragmentShader = SKIP
+4124 VULKAN : KHR-GLES31.core.layout_binding.image2D_layout_binding_imageLoad_VertexShader = SKIP
+
+// Passing on recent drivers:
+3726 VULKAN ANDROID : KHR-GLES31.core.shader_atomic_counters.* = FAIL
+3726 VULKAN ANDROID : KHR-GLES31.core.shader_atomic_counters.advanced-usage-* = SKIP
+
+// Crashes on Android
+3520 VULKAN ANDROID : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength* = SKIP
+
+// OpenGL ES 3.1 conformance failures
+4107 SWIFTSHADER : KHR-GLES31.core.shader_storage_buffer_object.advanced-switchBuffers-vs = FAIL
+
+4106 SWIFTSHADER : KHR-GLES31.core.layout_binding.sampler*_layout_binding_texture_* = FAIL
+
+4108 SWIFTSHADER : KHR-GLES31.core.shader_image_size.*-nonMS-* = SKIP
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles3_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles3_TestExpectations
new file mode 100644
index 0000000..6293f81
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles3_TestExpectations
@@ -0,0 +1,181 @@
+// Copyright 2019 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.
+
+// This file contains a list of defective dEQP conformance tests. The expected
+// format is:
+// {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
+//
+// MODIFIERS can be a combination of the below list, combined with a logical AND:
+// WIN XP VISTA WIN7 WIN8 WIN10
+// MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
+// LINUX CHROMEOS ANDROID
+// NVIDIA AMD INTEL
+// DEBUG RELEASE
+// D3D9 D3D11 OPENGL GLES VULKAN
+// NEXUS5X PIXEL2ORXL
+// QUADROP400
+//
+//
+// TEST_NAME can be a specific test name, or have a '*' in the end, which
+// indicates a prefix matching.
+//
+// Examples:
+// fails on both windows and mac (crash)
+// 91530 WIN : context_lost_restored = SKIP
+// 91530 MAC : context_lost_restored = SKIP
+// fails on windows using NVIDIA GPUs
+// 91533 WIN NVIDIA : gl_min_uniforms = FAIL
+// fails on Nexus5X with GLES backend (hangs)
+// 91531 NEXUS5X GLES : conformance_more_* = SKIP
+
+// For now we only log Vulkan test expectations. More back-ends can follow as we need them.
+
+// Depth/stencil related failures due to Vulkan driver bugs.
+3683 VULKAN ANDROID : KHR-GLES3.packed_depth_stencil.*.depth24_stencil8 = FAIL
+3683 VULKAN ANDROID : KHR-GLES3.packed_depth_stencil.*.depth32f_stencil8 = FAIL
+
+// CopyTexImage conversion failing due to Vulkan validation error re: UINT/SINT-descriptor-set issue.
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_texture2d = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_negx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_negy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_negz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_posx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_posy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_posz = FAIL
+
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_texture2d = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_negx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_negy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_negz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_posx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_posy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_posz = FAIL
+
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_texture2d = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_negx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_negy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_negz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_posx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_posy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_posz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_texture2d = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_negx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_negy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_negz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_posx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_posy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_posz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_texture2d = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_negx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_negy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_negz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_posx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_posy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_posz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_texture2d = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_negx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_negy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_negz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_posx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_posy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_posz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_texture2d = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_negx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_negy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_negz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_posx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_posy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_posz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_texture2d = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_negx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_negy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_negz = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_posx = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_posy = FAIL
+3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_posz = FAIL
+
+// glCopyTexImage from 3D textures is failing and getting the following Vulkan Validation errors:
+//
+// ImageView must not be a 2D or 2DArray view of a 3D image. The Vulkan spec states:
+// imageView must not be 2D or 2D array image view created from a 3D image
+//
+3836 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_texture2d = FAIL
+3836 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_negx = FAIL
+3836 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_negy = FAIL
+3836 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_negz = FAIL
+3836 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_posx = FAIL
+3836 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_posy = FAIL
+3836 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_posz = FAIL
+
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.r8 = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rg8 = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rg8i = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rg8ui = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgb8 = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba8 = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba8i = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba8ui = FAIL
+
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rg16i = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rg16ui = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rg16f = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgb16f = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba16i = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba16ui = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba16f = FAIL
+
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rg32i = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rg32ui = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rg32f = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba32i = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba32ui = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba32f = FAIL
+
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgb = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgb565 = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgb5_a1 = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.srgb8_alpha8 = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba = FAIL
+3836 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.rgba4 = FAIL
+
+
+// Fails only with SwiftShader:
+
+// These only fail on Android
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_dynamic_loop_write_static_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_dynamic_loop_write_static_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_dynamic_write_static_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_dynamic_write_static_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_static_loop_write_static_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_static_loop_write_static_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_static_write_dynamic_loop_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_static_write_dynamic_loop_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_static_write_dynamic_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_static_write_dynamic_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_static_write_static_loop_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat2x4_static_write_static_loop_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_dynamic_loop_write_static_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_dynamic_loop_write_static_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_dynamic_write_static_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_dynamic_write_static_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_static_loop_write_static_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_static_loop_write_static_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_static_write_dynamic_loop_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_static_write_dynamic_loop_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_static_write_dynamic_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_static_write_dynamic_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_static_write_static_loop_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat3x4_static_write_static_loop_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_static_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_static_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_dynamic_write_static_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_dynamic_write_static_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_static_loop_write_static_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_static_loop_write_static_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_static_write_dynamic_loop_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_static_write_dynamic_loop_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_static_write_dynamic_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_static_write_dynamic_read_vertex = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_static_write_static_loop_read_fragment = FAIL
+4019 SWIFTSHADER : KHR-GLES3.shaders.indexing.matrix_subscript.mat4_static_write_static_loop_read_vertex = FAIL
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/glcShaderConstExprTests_override.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/glcShaderConstExprTests_override.cpp
new file mode 100644
index 0000000..21fb6b6
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/glcShaderConstExprTests_override.cpp
@@ -0,0 +1,643 @@
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2017 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * \file glcShaderConstExprTests.cpp
+ * \brief Declares shader constant expressions tests.
+ */ /*-------------------------------------------------------------------*/
+
+#include <map>
+#include "deMath.h"
+#include "deSharedPtr.hpp"
+#include "glcShaderConstExprTests.hpp"
+#include "glsShaderExecUtil.hpp"
+#include "gluContextInfo.hpp"
+#include "gluShaderUtil.hpp"
+#include "tcuFloat.hpp"
+#include "tcuStringTemplate.hpp"
+#include "tcuTestLog.hpp"
+
+using namespace deqp::gls::ShaderExecUtil;
+
+namespace glcts
+{
+
+namespace ShaderConstExpr
+{
+
+struct TestParams
+{
+ const char *name;
+ const char *expression;
+
+ glu::DataType inType;
+ int minComponents;
+ int maxComponents;
+
+ glu::DataType outType;
+ union
+ {
+ float outputFloat;
+ int outputInt;
+ };
+};
+
+struct ShaderExecutorParams
+{
+ deqp::Context *context;
+
+ std::string caseName;
+ std::string source;
+
+ glu::DataType outType;
+ union
+ {
+ float outputFloat;
+ int outputInt;
+ };
+};
+
+template <typename OutputType>
+class ExecutorTestCase : public deqp::TestCase
+{
+ public:
+ ExecutorTestCase(deqp::Context &context,
+ const char *name,
+ glu::ShaderType shaderType,
+ const ShaderSpec &shaderSpec,
+ OutputType expectedOutput);
+ virtual ~ExecutorTestCase(void);
+ virtual tcu::TestNode::IterateResult iterate(void);
+
+ protected:
+ void validateOutput(de::SharedPtr<ShaderExecutor> executor);
+
+ glu::ShaderType m_shaderType;
+ ShaderSpec m_shaderSpec;
+ OutputType m_expectedOutput;
+};
+
+template <typename OutputType>
+ExecutorTestCase<OutputType>::ExecutorTestCase(deqp::Context &context,
+ const char *name,
+ glu::ShaderType shaderType,
+ const ShaderSpec &shaderSpec,
+ OutputType expectedOutput)
+ : deqp::TestCase(context, name, ""),
+ m_shaderType(shaderType),
+ m_shaderSpec(shaderSpec),
+ m_expectedOutput(expectedOutput)
+{}
+
+template <typename OutputType>
+ExecutorTestCase<OutputType>::~ExecutorTestCase(void)
+{}
+
+template <>
+void ExecutorTestCase<float>::validateOutput(de::SharedPtr<ShaderExecutor> executor)
+{
+ float result = 0.0f;
+ void *const outputs = &result;
+ executor->execute(1, DE_NULL, &outputs);
+
+ const float epsilon = 0.01f;
+ if (de::abs(m_expectedOutput - result) > epsilon)
+ {
+ m_context.getTestContext().getLog()
+ << tcu::TestLog::Message << "Expected: " << m_expectedOutput << " ("
+ << tcu::toHex(tcu::Float32(m_expectedOutput).bits())
+ << ") but constant expresion returned: " << result << " ("
+ << tcu::toHex(tcu::Float32(result).bits()) << "), used " << epsilon
+ << " epsilon for comparison" << tcu::TestLog::EndMessage;
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+ return;
+ }
+
+ m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
+ return;
+}
+
+template <>
+void ExecutorTestCase<int>::validateOutput(de::SharedPtr<ShaderExecutor> executor)
+{
+ int result = 0;
+ void *const outputs = &result;
+ executor->execute(1, DE_NULL, &outputs);
+
+ if (result == m_expectedOutput)
+ {
+ m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
+ return;
+ }
+
+ m_context.getTestContext().getLog()
+ << tcu::TestLog::Message << "Expected: " << m_expectedOutput
+ << " but constant expresion returned: " << result << tcu::TestLog::EndMessage;
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+}
+
+template <typename OutputType>
+tcu::TestNode::IterateResult ExecutorTestCase<OutputType>::iterate(void)
+{
+ de::SharedPtr<ShaderExecutor> executor(
+ createExecutor(m_context.getRenderContext(), m_shaderType, m_shaderSpec));
+
+ DE_ASSERT(executor.get());
+
+ executor->log(m_context.getTestContext().getLog());
+
+ try
+ {
+ if (!executor->isOk())
+ TCU_FAIL("Compilation failed");
+
+ executor->useProgram();
+
+ validateOutput(executor);
+ }
+ catch (const tcu::NotSupportedError &e)
+ {
+ m_testCtx.getLog() << tcu::TestLog::Message << e.what() << tcu::TestLog::EndMessage;
+ m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, e.getMessage());
+ }
+ catch (const tcu::TestError &e)
+ {
+ m_testCtx.getLog() << tcu::TestLog::Message << e.what() << tcu::TestLog::EndMessage;
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, e.getMessage());
+ }
+
+ return tcu::TestNode::STOP;
+}
+
+template <typename OutputType>
+void createTestCasesForAllShaderTypes(const ShaderExecutorParams ¶ms,
+ std::vector<tcu::TestNode *> &outputTests)
+{
+ DE_ASSERT(params.context);
+
+ deqp::Context &context = *(params.context);
+ glu::ContextType contextType = context.getRenderContext().getType();
+
+ ShaderSpec shaderSpec;
+ shaderSpec.version = glu::getContextTypeGLSLVersion(contextType);
+ shaderSpec.source = params.source;
+ shaderSpec.outputs.push_back(
+ Symbol("out0", glu::VarType(params.outType, glu::PRECISION_HIGHP)));
+
+ // Construct list of shaders for which tests can be created
+ std::vector<glu::ShaderType> shaderTypes;
+
+ if (glu::contextSupports(contextType, glu::ApiType::core(4, 3)))
+ {
+ shaderTypes.push_back(glu::SHADERTYPE_VERTEX);
+ shaderTypes.push_back(glu::SHADERTYPE_FRAGMENT);
+ shaderTypes.push_back(glu::SHADERTYPE_COMPUTE);
+ shaderTypes.push_back(glu::SHADERTYPE_GEOMETRY);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_CONTROL);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_EVALUATION);
+ }
+ else if (glu::contextSupports(contextType, glu::ApiType::es(3, 2)))
+ {
+ shaderSpec.version = glu::GLSL_VERSION_320_ES;
+ shaderTypes.push_back(glu::SHADERTYPE_GEOMETRY);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_CONTROL);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_EVALUATION);
+ }
+ else if (glu::contextSupports(contextType, glu::ApiType::es(3, 1)))
+ {
+ shaderSpec.version = glu::GLSL_VERSION_310_ES;
+ shaderTypes.push_back(glu::SHADERTYPE_COMPUTE);
+ shaderTypes.push_back(glu::SHADERTYPE_GEOMETRY);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_CONTROL);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_EVALUATION);
+ }
+ else
+ {
+ shaderTypes.push_back(glu::SHADERTYPE_VERTEX);
+ shaderTypes.push_back(glu::SHADERTYPE_FRAGMENT);
+ }
+
+ shaderSpec.globalDeclarations += "precision highp float;\n";
+
+ for (std::size_t typeIndex = 0; typeIndex < shaderTypes.size(); ++typeIndex)
+ {
+ glu::ShaderType shaderType = shaderTypes[typeIndex];
+ std::string caseName(params.caseName + '_' + getShaderTypeName(shaderType));
+
+ outputTests.push_back(
+ new ExecutorTestCase<OutputType>(context, caseName.c_str(), shaderType, shaderSpec,
+ static_cast<OutputType>(params.outputFloat)));
+ }
+}
+
+void createTests(deqp::Context &context,
+ const TestParams *cases,
+ int numCases,
+ const char *shaderTemplateSrc,
+ const char *casePrefix,
+ std::vector<tcu::TestNode *> &outputTests)
+{
+ const tcu::StringTemplate shaderTemplate(shaderTemplateSrc);
+ const char *componentAccess[] = {"", ".y", ".z", ".w"};
+
+ ShaderExecutorParams shaderExecutorParams;
+ shaderExecutorParams.context = &context;
+
+ for (int caseIndex = 0; caseIndex < numCases; caseIndex++)
+ {
+ const TestParams &testCase = cases[caseIndex];
+ const std::string baseName = testCase.name;
+ const int minComponents = testCase.minComponents;
+ const int maxComponents = testCase.maxComponents;
+ const glu::DataType inType = testCase.inType;
+ const std::string expression = testCase.expression;
+
+ // Check for presence of func(vec, scalar) style specialization,
+ // use as gatekeeper for applying said specialization
+ const bool alwaysScalar = expression.find("${MT}") != std::string::npos;
+
+ std::map<std::string, std::string> shaderTemplateParams;
+ shaderTemplateParams["CASE_BASE_TYPE"] = glu::getDataTypeName(testCase.outType);
+
+ shaderExecutorParams.outType = testCase.outType;
+ shaderExecutorParams.outputFloat = testCase.outputFloat;
+
+ for (int component = minComponents - 1; component < maxComponents; component++)
+ {
+ // Get type name eg. float, vec2, vec3, vec4 (same for other primitive types)
+ glu::DataType dataType = static_cast<glu::DataType>(inType + component);
+ std::string typeName = glu::getDataTypeName(dataType);
+
+ // ${T} => final type, ${MT} => final type but with scalar version usable even when T is
+ // a vector
+ std::map<std::string, std::string> expressionTemplateParams;
+ expressionTemplateParams["T"] = typeName;
+ expressionTemplateParams["MT"] = typeName;
+
+ const tcu::StringTemplate expressionTemplate(expression);
+
+ // Add vector access to expression as needed
+ shaderTemplateParams["CASE_EXPRESSION"] =
+ expressionTemplate.specialize(expressionTemplateParams) +
+ componentAccess[component];
+
+ {
+ // Add type to case name if we are generating multiple versions
+ shaderExecutorParams.caseName = (casePrefix + baseName);
+ if (minComponents != maxComponents)
+ shaderExecutorParams.caseName += ("_" + typeName);
+
+ shaderExecutorParams.source = shaderTemplate.specialize(shaderTemplateParams);
+ if (shaderExecutorParams.outType == glu::TYPE_FLOAT)
+ createTestCasesForAllShaderTypes<float>(shaderExecutorParams, outputTests);
+ else
+ createTestCasesForAllShaderTypes<int>(shaderExecutorParams, outputTests);
+ }
+
+ // Deal with functions that allways accept one ore more scalar parameters even when
+ // others are vectors
+ if (alwaysScalar && component > 0)
+ {
+ shaderExecutorParams.caseName =
+ casePrefix + baseName + "_" + typeName + "_" + glu::getDataTypeName(inType);
+
+ expressionTemplateParams["MT"] = glu::getDataTypeName(inType);
+ shaderTemplateParams["CASE_EXPRESSION"] =
+ expressionTemplate.specialize(expressionTemplateParams) +
+ componentAccess[component];
+
+ shaderExecutorParams.source = shaderTemplate.specialize(shaderTemplateParams);
+ if (shaderExecutorParams.outType == glu::TYPE_FLOAT)
+ createTestCasesForAllShaderTypes<float>(shaderExecutorParams, outputTests);
+ else
+ createTestCasesForAllShaderTypes<int>(shaderExecutorParams, outputTests);
+ }
+ } // component loop
+ }
+}
+
+} // namespace ShaderConstExpr
+
+ShaderConstExprTests::ShaderConstExprTests(deqp::Context &context)
+ : deqp::TestCaseGroup(context, "constant_expressions", "Constant expressions")
+{}
+
+ShaderConstExprTests::~ShaderConstExprTests(void) {}
+
+void ShaderConstExprTests::init(void)
+{
+ // Needed for autogenerating shader code for increased component counts
+ DE_STATIC_ASSERT(glu::TYPE_FLOAT + 1 == glu::TYPE_FLOAT_VEC2);
+ DE_STATIC_ASSERT(glu::TYPE_FLOAT + 2 == glu::TYPE_FLOAT_VEC3);
+ DE_STATIC_ASSERT(glu::TYPE_FLOAT + 3 == glu::TYPE_FLOAT_VEC4);
+
+ DE_STATIC_ASSERT(glu::TYPE_INT + 1 == glu::TYPE_INT_VEC2);
+ DE_STATIC_ASSERT(glu::TYPE_INT + 2 == glu::TYPE_INT_VEC3);
+ DE_STATIC_ASSERT(glu::TYPE_INT + 3 == glu::TYPE_INT_VEC4);
+
+ DE_STATIC_ASSERT(glu::TYPE_UINT + 1 == glu::TYPE_UINT_VEC2);
+ DE_STATIC_ASSERT(glu::TYPE_UINT + 2 == glu::TYPE_UINT_VEC3);
+ DE_STATIC_ASSERT(glu::TYPE_UINT + 3 == glu::TYPE_UINT_VEC4);
+
+ DE_STATIC_ASSERT(glu::TYPE_BOOL + 1 == glu::TYPE_BOOL_VEC2);
+ DE_STATIC_ASSERT(glu::TYPE_BOOL + 2 == glu::TYPE_BOOL_VEC3);
+ DE_STATIC_ASSERT(glu::TYPE_BOOL + 3 == glu::TYPE_BOOL_VEC4);
+
+ // ${T} => final type, ${MT} => final type but with scalar version usable even when T is a
+ // vector
+ const ShaderConstExpr::TestParams baseCases[] = {
+ {"radians",
+ "radians(${T} (90.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_FLOAT,
+ {deFloatRadians(90.0f)}},
+ {"degrees",
+ "degrees(${T} (2.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_FLOAT,
+ {deFloatDegrees(2.0f)}},
+ {"sin", "sin(${T} (3.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {deFloatSin(3.0f)}},
+ {"cos", "cos(${T} (3.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {deFloatCos(3.2f)}},
+ {"asin", "asin(${T} (0.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {deFloatAsin(0.0f)}},
+ {"acos", "acos(${T} (1.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {deFloatAcos(1.0f)}},
+ {"pow",
+ "pow(${T} (1.7), ${T} (3.5))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_FLOAT,
+ {deFloatPow(1.7f, 3.5f)}},
+ {"exp", "exp(${T} (4.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {deFloatExp(4.2f)}},
+ {"log", "log(${T} (42.12))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {deFloatLog(42.12f)}},
+ {"exp2", "exp2(${T} (6.7))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {deFloatExp2(6.7f)}},
+ {"log2",
+ "log2(${T} (100.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_FLOAT,
+ {deFloatLog2(100.0f)}},
+ {"sqrt", "sqrt(${T} (10.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {deFloatSqrt(10.0f)}},
+ {"inversesqrt",
+ "inversesqrt(${T} (10.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_FLOAT,
+ {deFloatRsq(10.0f)}},
+ {"abs", "abs(${T} (-42))", glu::TYPE_INT, 1, 4, glu::TYPE_INT, {42}},
+ {"sign", "sign(${T} (-18.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {-1.0f}},
+ {"floor",
+ "floor(${T} (37.3))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_FLOAT,
+ {deFloatFloor(37.3f)}},
+ {"trunc", "trunc(${T} (-1.8))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {-1.0f}},
+ {"round", "round(${T} (42.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {42.0f}},
+ {"ceil", "ceil(${T} (82.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {deFloatCeil(82.2f)}},
+ {"mod",
+ "mod(${T} (87.65), ${MT} (3.7))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_FLOAT,
+ {deFloatMod(87.65f, 3.7f)}},
+ {"min", "min(${T} (12.3), ${MT} (32.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {12.3f}},
+ {"max", "max(${T} (12.3), ${MT} (32.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, {32.1f}},
+ {"clamp",
+ "clamp(${T} (42.1), ${MT} (10.0), ${MT} (15.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_FLOAT,
+ {15.0f}},
+ {"length_float", "length(1.0)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, {1.0f}},
+ {"length_vec2",
+ "length(vec2(1.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_FLOAT,
+ {deFloatSqrt(2.0f)}},
+ {"length_vec3",
+ "length(vec3(1.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_FLOAT,
+ {deFloatSqrt(3.0f)}},
+ {"length_vec4",
+ "length(vec4(1.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_FLOAT,
+ {deFloatSqrt(4.0f)}},
+ {"dot_float", "dot(1.0, 1.0)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, {1.0f}},
+ {"dot_vec2", "dot(vec2(1.0), vec2(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, {2.0f}},
+ {"dot_vec3", "dot(vec3(1.0), vec3(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, {3.0f}},
+ {"dot_vec4", "dot(vec4(1.0), vec4(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, {4.0f}},
+ {"normalize_float", "normalize(1.0)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, {1.0f}},
+ {"normalize_vec2",
+ "normalize(vec2(1.0)).x",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_FLOAT,
+ {deFloatRsq(2.0f)}},
+ {"normalize_vec3",
+ "normalize(vec3(1.0)).x",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_FLOAT,
+ {deFloatRsq(3.0f)}},
+ {"normalize_vec4",
+ "normalize(vec4(1.0)).x",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_FLOAT,
+ {deFloatRsq(4.0f)}},
+ };
+
+ const ShaderConstExpr::TestParams arrayCases[] = {
+ {"radians",
+ "radians(${T} (60.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {deFloatRadians(60.0f)}},
+ {"degrees",
+ "degrees(${T} (0.11))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {deFloatDegrees(0.11f)}},
+ {"sin",
+ "${T} (1.0) + sin(${T} (0.7))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {1.0f + deFloatSin(0.7f)}},
+ {"cos",
+ "${T} (1.0) + cos(${T} (0.7))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {1.0f + deFloatCos(0.7f)}},
+ {"asin", "asin(${T} (0.9))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatAsin(0.9f)}},
+ {"acos", "acos(${T} (-0.5))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatAcos(-0.5f)}},
+ {"pow",
+ "pow(${T} (2.0), ${T} (2.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {deFloatPow(2.0f, 2.0f)}},
+ {"exp", "exp(${T} (1.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatExp(1.2f)}},
+ {"log", "log(${T} (8.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatLog(8.0f)}},
+ {"exp2", "exp2(${T} (2.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatExp2(2.1f)}},
+ {"log2", "log2(${T} (9.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatLog2(9.0)}},
+ {"sqrt", "sqrt(${T} (4.5))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatSqrt(4.5f)}},
+ {"inversesqrt",
+ "inversesqrt(${T} (0.26))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {deFloatRsq(0.26f)}},
+ {"abs", "abs(${T} (-2))", glu::TYPE_INT, 1, 4, glu::TYPE_INT, {2}},
+ {"sign", "sign(${T} (18.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatSign(18.0f)}},
+ {"floor", "floor(${T} (3.3))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatFloor(3.3f)}},
+ {"trunc", "trunc(${T} (2.8))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {2}},
+ {"round", "round(${T} (2.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatRound(2.2f)}},
+ {"ceil", "ceil(${T} (2.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, {deFloatCeil(2.2f)}},
+ {"mod",
+ "mod(${T} (7.1), ${MT} (4.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {deFloatMod(7.1f, 4.0f)}},
+ {"min",
+ "min(${T} (2.3), ${MT} (3.1))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {deFloatMin(2.3f, 3.1f)}},
+ {"max",
+ "max(${T} (2.3), ${MT} (3.1))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {deFloatMax(2.3f, 3.1f)}},
+ {"clamp",
+ "clamp(${T} (4.1), ${MT} (2.1), ${MT} (3.1))",
+ glu::TYPE_FLOAT,
+ 1,
+ 4,
+ glu::TYPE_INT,
+ {3}},
+ {"length_float", "length(2.1)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, {2}},
+ {"length_vec2",
+ "length(vec2(1.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_INT,
+ {deFloatSqrt(2.0f)}},
+ {"length_vec3",
+ "length(vec3(1.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_INT,
+ {deFloatSqrt(3.0f)}},
+ {"length_vec4",
+ "length(vec4(1.0))",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_INT,
+ {deFloatSqrt(4.0f)}},
+ {"dot_float", "dot(1.0, 1.0)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, {1}},
+ {"dot_vec2", "dot(vec2(1.0), vec2(1.01))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, {2}},
+ {"dot_vec3", "dot(vec3(1.0), vec3(1.1))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, {3}},
+ {"dot_vec4", "dot(vec4(1.0), vec4(1.1))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, {4}},
+ {"normalize_float",
+ "${T} (1.0) + normalize(2.0)",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_INT,
+ {2}},
+ {"normalize_vec2",
+ "${T} (1.0) + normalize(vec2(1.0)).x",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_INT,
+ {1.0f + deFloatRsq(2.0f)}},
+ {"normalize_vec3",
+ "${T} (1.0) + normalize(vec3(1.0)).x",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_INT,
+ {1.0f + deFloatRsq(3.0f)}},
+ {"normalize_vec4",
+ "${T} (1.0) + normalize(vec4(1.0)).x",
+ glu::TYPE_FLOAT,
+ 1,
+ 1,
+ glu::TYPE_INT,
+ {1.0f + deFloatRsq(4.0f)}},
+ };
+
+ const char *basicShaderTemplate =
+ "const ${CASE_BASE_TYPE} cval = ${CASE_EXPRESSION};\n"
+ "out0 = cval;\n";
+
+ std::vector<tcu::TestNode *> children;
+ ShaderConstExpr::createTests(m_context, baseCases, DE_LENGTH_OF_ARRAY(baseCases),
+ basicShaderTemplate, "basic_", children);
+
+ const char *arrayShaderTemplate =
+ "float array[int(${CASE_EXPRESSION})];\n"
+ "out0 = array.length();\n";
+
+ ShaderConstExpr::createTests(m_context, arrayCases, DE_LENGTH_OF_ARRAY(arrayCases),
+ arrayShaderTemplate, "array_", children);
+
+ for (std::size_t i = 0; i < children.size(); i++)
+ addChild(children[i]);
+}
+
+} // namespace glcts
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/glcShaderMacroTests_override.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/glcShaderMacroTests_override.cpp
new file mode 100644
index 0000000..739cba6
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/glcShaderMacroTests_override.cpp
@@ -0,0 +1,147 @@
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2017 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */ /*!
+ * \file
+ * \brief
+ */ /*-------------------------------------------------------------------*/
+
+#include "deSharedPtr.hpp"
+#include "glcShaderMacroTests.hpp"
+#include "glsShaderExecUtil.hpp"
+#include "gluContextInfo.hpp"
+#include "tcuTestLog.hpp"
+
+namespace glcts
+{
+
+using tcu::TestLog;
+using namespace deqp::gls::ShaderExecUtil;
+
+class ExecutorTestCase : public deqp::TestCase
+{
+ public:
+ ExecutorTestCase(deqp::Context &context,
+ const char *name,
+ glu::ShaderType shaderType,
+ const ShaderSpec &shaderSpec,
+ int expectedOutput);
+ virtual ~ExecutorTestCase(void);
+ virtual tcu::TestNode::IterateResult iterate(void);
+
+ protected:
+ glu::ShaderType m_shaderType;
+ ShaderSpec m_shaderSpec;
+ int m_expectedOutput;
+};
+
+ExecutorTestCase::ExecutorTestCase(deqp::Context &context,
+ const char *name,
+ glu::ShaderType shaderType,
+ const ShaderSpec &shaderSpec,
+ int expectedOutput)
+ : deqp::TestCase(context, name, ""),
+ m_shaderType(shaderType),
+ m_shaderSpec(shaderSpec),
+ m_expectedOutput(expectedOutput)
+{}
+
+ExecutorTestCase::~ExecutorTestCase(void) {}
+
+tcu::TestNode::IterateResult ExecutorTestCase::iterate(void)
+{
+ de::SharedPtr<ShaderExecutor> executor(
+ createExecutor(m_context.getRenderContext(), m_shaderType, m_shaderSpec));
+
+ DE_ASSERT(executor.get());
+
+ executor->log(m_context.getTestContext().getLog());
+
+ if (!executor->isOk())
+ TCU_FAIL("Compilation failed");
+
+ executor->useProgram();
+
+ int result = 0;
+ void *const outputs = &result;
+ executor->execute(1, DE_NULL, &outputs);
+
+ if (m_expectedOutput == result)
+ {
+ m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
+ return tcu::TestNode::STOP;
+ }
+
+ m_context.getTestContext().getLog()
+ << tcu::TestLog::Message << "Expected: " << m_expectedOutput
+ << " but test returned: " << result << tcu::TestLog::EndMessage;
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+
+ return tcu::TestNode::STOP;
+}
+
+ShaderMacroTests::ShaderMacroTests(deqp::Context &context)
+ : TestCaseGroup(context, "shader_macros", "Shader Macro tests")
+{}
+
+ShaderMacroTests::~ShaderMacroTests() {}
+
+void ShaderMacroTests::init(void)
+{
+ const char *fragmentPrecisionShaderTemplate =
+ "out0 = 0;\n"
+ "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+ "out0 = 1;\n"
+ "#endif\n";
+
+ glu::ContextType contextType = m_context.getRenderContext().getType();
+
+ ShaderSpec shaderSpec;
+ shaderSpec.version = glu::getContextTypeGLSLVersion(contextType);
+ shaderSpec.source = fragmentPrecisionShaderTemplate;
+ shaderSpec.outputs.push_back(Symbol("out0", glu::VarType(glu::TYPE_INT, glu::PRECISION_HIGHP)));
+
+ std::vector<glu::ShaderType> shaderTypes;
+ shaderTypes.push_back(glu::SHADERTYPE_VERTEX);
+ shaderTypes.push_back(glu::SHADERTYPE_FRAGMENT);
+
+ if (glu::contextSupports(contextType, glu::ApiType::es(3, 2)))
+ {
+ shaderSpec.version = glu::GLSL_VERSION_320_ES;
+ shaderTypes.push_back(glu::SHADERTYPE_GEOMETRY);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_CONTROL);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_EVALUATION);
+ }
+ else if (glu::contextSupports(contextType, glu::ApiType::es(3, 1)))
+ {
+ shaderSpec.version = glu::GLSL_VERSION_310_ES;
+ shaderTypes.push_back(glu::SHADERTYPE_GEOMETRY);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_CONTROL);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_EVALUATION);
+ }
+
+ for (std::size_t typeIndex = 0; typeIndex < shaderTypes.size(); ++typeIndex)
+ {
+ glu::ShaderType shaderType = shaderTypes[typeIndex];
+ std::string caseName("fragment_precision_high_");
+ caseName += getShaderTypeName(shaderType);
+ addChild(new ExecutorTestCase(m_context, caseName.c_str(), shaderType, shaderSpec, 1));
+ }
+}
+
+} // namespace glcts
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/tes31Context_override.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/tes31Context_override.cpp
index 89bd1d8..f9d459d 100644
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/tes31Context_override.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/tes31Context_override.cpp
@@ -24,17 +24,17 @@
{
Context::Context (tcu::TestContext& testCtx)
- : m_testCtx (testCtx)
- , m_renderCtx (DE_NULL)
- , m_contextInfo (DE_NULL)
+ : m_testCtx (testCtx)
+ , m_renderCtx (DE_NULL)
+ , m_contextInfo (DE_NULL)
{
if (m_testCtx.getCommandLine().getRunMode() == tcu::RUNMODE_EXECUTE)
createRenderContext();
else
{
// \todo [2016-11-15 pyry] Many tests (erroneously) inspect context type
- // during test hierarchy construction. We should fix that
- // and revert dummy context to advertise unknown context type.
+ // during test hierarchy construction. We should fix that
+ // and revert dummy context to advertise unknown context type.
m_renderCtx = new glu::DummyRenderContext(glu::ContextType(glu::ApiType::es(3,1)));
}
}
@@ -57,17 +57,17 @@
#if 0
try
{
- m_renderCtx = glu::createDefaultRenderContext(m_testCtx.getPlatform(), m_testCtx.getCommandLine(), glu::ApiType::es(3, 2));
+ m_renderCtx = glu::createDefaultRenderContext(m_testCtx.getPlatform(), m_testCtx.getCommandLine(), glu::ApiType::es(3, 2));
}
catch (...)
{
- m_renderCtx = glu::createDefaultRenderContext(m_testCtx.getPlatform(), m_testCtx.getCommandLine(), glu::ApiType::es(3, 1));
+ m_renderCtx = glu::createDefaultRenderContext(m_testCtx.getPlatform(), m_testCtx.getCommandLine(), glu::ApiType::es(3, 1));
}
#else
// Override the original behavior (above) to only create a 3.1 context
- m_renderCtx = glu::createDefaultRenderContext(m_testCtx.getPlatform(), m_testCtx.getCommandLine(), glu::ApiType::es(3, 1));
+ m_renderCtx = glu::createDefaultRenderContext(m_testCtx.getPlatform(), m_testCtx.getCommandLine(), glu::ApiType::es(3, 1));
#endif
- m_contextInfo = glu::ContextInfo::create(*m_renderCtx);
+ m_contextInfo = glu::ContextInfo::create(*m_renderCtx);
}
catch (...)
{
@@ -81,8 +81,8 @@
delete m_contextInfo;
delete m_renderCtx;
- m_contextInfo = DE_NULL;
- m_renderCtx = DE_NULL;
+ m_contextInfo = DE_NULL;
+ m_renderCtx = DE_NULL;
}
const tcu::RenderTarget& Context::getRenderTarget (void) const
@@ -93,4 +93,4 @@
} // gles31
} // deqp
-// clang-format on
+// clang-format on
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLBackwardsCompatibleContextTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLBackwardsCompatibleContextTest.cpp
index e784921..e2a899a 100644
--- a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLBackwardsCompatibleContextTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLBackwardsCompatibleContextTest.cpp
@@ -133,8 +133,6 @@
{
ANGLE_SKIP_TEST_IF(
!IsEGLDisplayExtensionEnabled(mDisplay, "EGL_ANGLE_create_context_backwards_compatible"));
- // TODO(anglebug.com/3750): Re-evaluate when Vulkan can return 3.0 contexts
- ANGLE_SKIP_TEST_IF(isVulkanRenderer());
EGLint es3ContextAttribs[] = {
EGL_CONTEXT_MAJOR_VERSION, 3, EGL_CONTEXT_MINOR_VERSION, 0, EGL_NONE, EGL_NONE};
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLBlobCacheTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLBlobCacheTest.cpp
index 90912e1..0f376ce 100644
--- a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLBlobCacheTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLBlobCacheTest.cpp
@@ -214,4 +214,4 @@
EXPECT_EGL_ERROR(EGL_BAD_PARAMETER);
}
-ANGLE_INSTANTIATE_TEST(EGLBlobCacheTest, ES2_D3D9(), ES2_D3D11(), ES2_OPENGL(), ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(EGLBlobCacheTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLContextSharingTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLContextSharingTest.cpp
index 16bdc44..2e80366 100644
--- a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLContextSharingTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLContextSharingTest.cpp
@@ -10,6 +10,7 @@
#include "test_utils/ANGLETest.h"
#include "test_utils/angle_test_configs.h"
+#include "test_utils/gl_raii.h"
#include "util/EGLWindow.h"
using namespace angle;
@@ -243,6 +244,126 @@
ASSERT_GL_FALSE(glIsTexture(textureFromCtx0));
}
+// Tests that deleting an object on one Context doesn't destroy it ahead-of-time. Mostly focused
+// on the Vulkan back-end where we manage object lifetime manually.
+TEST_P(EGLContextSharingTest, TextureLifetime)
+{
+ EGLWindow *eglWindow = getEGLWindow();
+ EGLConfig config = getEGLWindow()->getConfig();
+ EGLDisplay display = getEGLWindow()->getDisplay();
+
+ // Create a pbuffer surface for use with a shared context.
+ EGLSurface surface = eglWindow->getSurface();
+ EGLContext mainContext = eglWindow->getContext();
+
+ // Initialize a shared context.
+ mContexts[0] = eglCreateContext(display, config, mainContext, nullptr);
+ ASSERT_NE(mContexts[0], EGL_NO_CONTEXT);
+
+ // Create a Texture on the shared context.
+ ASSERT_EGL_TRUE(eglMakeCurrent(display, surface, surface, mContexts[0]));
+
+ constexpr GLsizei kTexSize = 2;
+ const GLColor kTexData[kTexSize * kTexSize] = {GLColor::red, GLColor::green, GLColor::blue,
+ GLColor::yellow};
+ GLTexture tex;
+ glBindTexture(GL_TEXTURE_2D, tex);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, kTexSize, kTexSize, 0, GL_RGBA, GL_UNSIGNED_BYTE,
+ kTexData);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+
+ // Make the main Context current and draw with the texture.
+ ASSERT_EGL_TRUE(eglMakeCurrent(display, surface, surface, mainContext));
+
+ glBindTexture(GL_TEXTURE_2D, tex);
+ ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Texture2D(), essl1_shaders::fs::Texture2D());
+ glUseProgram(program);
+
+ // No uniform update because the update seems to hide the error on Vulkan.
+
+ // Enqueue the draw call.
+ drawQuad(program, essl1_shaders::PositionAttrib(), 0.5f);
+ EXPECT_GL_NO_ERROR();
+
+ // Delete the texture in the main context to orphan it.
+ // Do not read back the data to keep the commands in the graph.
+ tex.reset();
+
+ // Bind and delete the test context. This should trigger texture garbage collection.
+ ASSERT_EGL_TRUE(eglMakeCurrent(display, surface, surface, mContexts[0]));
+ SafeDestroyContext(display, mContexts[0]);
+
+ // Bind the main context to clean up the test.
+ ASSERT_EGL_TRUE(eglMakeCurrent(display, surface, surface, mainContext));
+}
+
+// Tests that deleting an object on one Context doesn't destroy it ahead-of-time. Mostly focused
+// on the Vulkan back-end where we manage object lifetime manually.
+TEST_P(EGLContextSharingTest, SamplerLifetime)
+{
+ EGLWindow *eglWindow = getEGLWindow();
+ EGLConfig config = getEGLWindow()->getConfig();
+ EGLDisplay display = getEGLWindow()->getDisplay();
+
+ ANGLE_SKIP_TEST_IF(getClientMajorVersion() < 3);
+ ANGLE_SKIP_TEST_IF(!IsEGLDisplayExtensionEnabled(display, "EGL_KHR_create_context"));
+
+ // Create a pbuffer surface for use with a shared context.
+ EGLSurface surface = eglWindow->getSurface();
+ EGLContext mainContext = eglWindow->getContext();
+
+ std::vector<EGLint> contextAttributes;
+ contextAttributes.push_back(EGL_CONTEXT_MAJOR_VERSION_KHR);
+ contextAttributes.push_back(getClientMajorVersion());
+ contextAttributes.push_back(EGL_NONE);
+
+ // Initialize a shared context.
+ mContexts[0] = eglCreateContext(display, config, mainContext, contextAttributes.data());
+ ASSERT_NE(mContexts[0], EGL_NO_CONTEXT);
+
+ // Create a Texture on the shared context. Also create a Sampler object.
+ ASSERT_EGL_TRUE(eglMakeCurrent(display, surface, surface, mContexts[0]));
+
+ constexpr GLsizei kTexSize = 2;
+ const GLColor kTexData[kTexSize * kTexSize] = {GLColor::red, GLColor::green, GLColor::blue,
+ GLColor::yellow};
+ GLTexture tex;
+ glBindTexture(GL_TEXTURE_2D, tex);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, kTexSize, kTexSize, 0, GL_RGBA, GL_UNSIGNED_BYTE,
+ kTexData);
+
+ GLSampler sampler;
+ glBindSampler(0, sampler);
+ glSamplerParameteri(sampler, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glSamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+
+ // Make the main Context current and draw with the texture and sampler.
+ ASSERT_EGL_TRUE(eglMakeCurrent(display, surface, surface, mainContext));
+
+ glBindTexture(GL_TEXTURE_2D, tex);
+ glBindSampler(0, sampler);
+ ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Texture2D(), essl1_shaders::fs::Texture2D());
+ glUseProgram(program);
+
+ // No uniform update because the update seems to hide the error on Vulkan.
+
+ // Enqueue the draw call.
+ drawQuad(program, essl1_shaders::PositionAttrib(), 0.5f);
+ EXPECT_GL_NO_ERROR();
+
+ // Delete the texture and sampler in the main context to orphan them.
+ // Do not read back the data to keep the commands in the graph.
+ tex.reset();
+ sampler.reset();
+
+ // Bind and delete the test context. This should trigger texture garbage collection.
+ ASSERT_EGL_TRUE(eglMakeCurrent(display, surface, surface, mContexts[0]));
+ SafeDestroyContext(display, mContexts[0]);
+
+ // Bind the main context to clean up the test.
+ ASSERT_EGL_TRUE(eglMakeCurrent(display, surface, surface, mainContext));
+}
} // anonymous namespace
ANGLE_INSTANTIATE_TEST(EGLContextSharingTest,
@@ -251,4 +372,5 @@
ES3_D3D11(),
ES2_OPENGL(),
ES3_OPENGL(),
- ES2_VULKAN());
+ ES2_VULKAN(),
+ ES3_VULKAN());
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLPrintEGLinfoTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLPrintEGLinfoTest.cpp
new file mode 100644
index 0000000..51f6245
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLPrintEGLinfoTest.cpp
@@ -0,0 +1,474 @@
+//
+// Copyright 2019 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.
+//
+// EGLPrintEGLinfoTest.cpp:
+// This test prints out the extension strings, configs and their attributes
+//
+
+#include <gtest/gtest.h>
+
+#include "common/string_utils.h"
+#include "test_utils/ANGLETest.h"
+
+using namespace angle;
+
+class EGLPrintEGLinfoTest : public ANGLETest
+{
+ protected:
+ EGLPrintEGLinfoTest() {}
+
+ void testSetUp() override
+ {
+ mDisplay = getEGLWindow()->getDisplay();
+ ASSERT_TRUE(mDisplay != EGL_NO_DISPLAY);
+ }
+
+ EGLDisplay mDisplay = EGL_NO_DISPLAY;
+};
+
+// Parse space separated extension string into a vector of strings
+std::vector<std::string> ParseExtensions(const char *extensions)
+{
+ std::string extensionsStr(extensions);
+ std::vector<std::string> extensionsVec;
+ SplitStringAlongWhitespace(extensionsStr, &extensionsVec);
+ return extensionsVec;
+}
+
+// Query a EGL attribute
+EGLint GetAttrib(EGLDisplay display, EGLConfig config, EGLint attrib)
+{
+ EGLint value = 0;
+ EXPECT_EGL_TRUE(eglGetConfigAttrib(display, config, attrib, &value));
+ return value;
+}
+
+// Query a egl string
+const char *GetEGLString(EGLDisplay display, EGLint name)
+{
+ const char *value = "";
+ value = eglQueryString(display, name);
+ EXPECT_TRUE(value != nullptr);
+ return value;
+}
+
+// Query a GL string
+const char *GetGLString(EGLint name)
+{
+ const char *value = "";
+ value = reinterpret_cast<const char *>(glGetString(name));
+ EXPECT_TRUE(value != nullptr);
+ return value;
+}
+
+// Print the EGL strings and extensions
+TEST_P(EGLPrintEGLinfoTest, PrintEGLInfo)
+{
+ std::cout << " EGL Information:" << std::endl;
+ std::cout << "\tVendor: " << GetEGLString(mDisplay, EGL_VENDOR) << std::endl;
+ std::cout << "\tVersion: " << GetEGLString(mDisplay, EGL_VENDOR) << std::endl;
+ std::cout << "\tClient APIs: " << GetEGLString(mDisplay, EGL_CLIENT_APIS) << std::endl;
+
+ std::cout << "\tEGL Client Extensions:" << std::endl;
+ for (auto extension : ParseExtensions(GetEGLString(EGL_NO_DISPLAY, EGL_EXTENSIONS)))
+ {
+ std::cout << "\t\t" << extension << std::endl;
+ }
+
+ std::cout << "\tEGL Display Extensions:" << std::endl;
+ for (auto extension : ParseExtensions(GetEGLString(mDisplay, EGL_EXTENSIONS)))
+ {
+ std::cout << "\t\t" << extension << std::endl;
+ }
+
+ std::cout << std::endl;
+}
+
+// Print the GL strings and extensions
+TEST_P(EGLPrintEGLinfoTest, PrintGLInfo)
+{
+ std::cout << " GLES Information:" << std::endl;
+ std::cout << "\tVendor: " << GetGLString(GL_VENDOR) << std::endl;
+ std::cout << "\tVersion: " << GetGLString(GL_VERSION) << std::endl;
+ std::cout << "\tRenderer: " << GetGLString(GL_RENDERER) << std::endl;
+ std::cout << "\tShader: " << GetGLString(GL_SHADING_LANGUAGE_VERSION) << std::endl;
+
+ std::cout << "\tExtensions:" << std::endl;
+ for (auto extension : ParseExtensions(GetGLString(GL_EXTENSIONS)))
+ {
+ std::cout << "\t\t" << extension << std::endl;
+ }
+
+ std::cout << std::endl;
+}
+
+#define QUERY_HELPER(enumValue, enumString, stream) \
+ { \
+ GLint result; \
+ glGetIntegerv(enumValue, &result); \
+ ASSERT_GL_NO_ERROR(); \
+ stream << enumString + std::string(",") + std::to_string(result) << std::endl; \
+ }
+
+#define QUERY_ARRAY_HELPER(enumValue, enumString, size, stream) \
+ { \
+ GLint result[size]; \
+ glGetIntegerv(enumValue, result); \
+ ASSERT_GL_NO_ERROR(); \
+ std::stringstream results; \
+ for (int i = 0; i < size; i++) \
+ results << result[i] << " "; \
+ stream << enumString + std::string(",") + results.str() << std::endl; \
+ }
+
+#define QUERY_INDEXED_HELPER(enumValue, enumString, index, stream) \
+ { \
+ GLint result; \
+ glGetIntegeri_v(enumValue, index, &result); \
+ ASSERT_GL_NO_ERROR(); \
+ stream << enumString + std::string(",") + std::to_string(result) << std::endl; \
+ }
+
+#define QUERY_AND_LOG_CAPABILITY(enum, stream) QUERY_HELPER(enum, #enum, stream)
+
+#define QUERY_AND_LOG_CAPABILITY_ARRAY(enum, size, stream) \
+ QUERY_ARRAY_HELPER(enum, #enum, size, stream)
+
+#define QUERY_AND_LOG_CAPABILITY_INDEXED(enum, index, stream) \
+ QUERY_INDEXED_HELPER(enum, #enum "[" #index "]", index, stream)
+
+static void LogGles2Capabilities(std::ostream &stream)
+{
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_CUBE_MAP_TEXTURE_SIZE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_UNIFORM_VECTORS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_RENDERBUFFER_SIZE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TEXTURE_IMAGE_UNITS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TEXTURE_SIZE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VARYING_VECTORS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATTRIBS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_UNIFORM_VECTORS, stream);
+ constexpr int kMaxViewPortDimsReturnValuesSize = 2;
+ QUERY_AND_LOG_CAPABILITY_ARRAY(GL_MAX_VIEWPORT_DIMS, kMaxViewPortDimsReturnValuesSize, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_NUM_COMPRESSED_TEXTURE_FORMATS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_NUM_PROGRAM_BINARY_FORMATS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_NUM_SHADER_BINARY_FORMATS, stream);
+}
+
+static void LogGles3Capabilities(std::ostream &stream)
+{
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_3D_TEXTURE_SIZE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_ARRAY_TEXTURE_LAYERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COLOR_ATTACHMENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_UNIFORM_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_DRAW_BUFFERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_ELEMENT_INDEX, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_ELEMENTS_INDICES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_ELEMENTS_VERTICES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_INPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_UNIFORM_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_PROGRAM_TEXEL_OFFSET, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_SAMPLES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_SERVER_WAIT_TIMEOUT, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TEXTURE_LOD_BIAS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_UNIFORM_BLOCK_SIZE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_UNIFORM_BUFFER_BINDINGS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VARYING_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_OUTPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_UNIFORM_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MIN_PROGRAM_TEXEL_OFFSET, stream);
+
+ // GLES3 capabilities are a superset of GLES2
+ LogGles2Capabilities(stream);
+}
+
+static void LogGles31Capabilities(std::ostream &stream)
+{
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COLOR_TEXTURE_SAMPLES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_ATOMIC_COUNTERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_IMAGE_UNIFORMS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_ATOMIC_COUNTERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_IMAGE_UNIFORMS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_SHARED_MEMORY_SIZE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_UNIFORM_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 0, stream);
+ QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 1, stream);
+ QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 2, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, stream);
+ QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 0, stream);
+ QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 1, stream);
+ QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 2, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_DEPTH_TEXTURE_SAMPLES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_ATOMIC_COUNTERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_IMAGE_UNIFORMS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAMEBUFFER_HEIGHT, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAMEBUFFER_SAMPLES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAMEBUFFER_WIDTH, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_IMAGE_UNITS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_INTEGER_SAMPLES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_SAMPLE_MASK_WORDS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_UNIFORM_LOCATIONS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATOMIC_COUNTERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATTRIB_BINDINGS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATTRIB_STRIDE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_IMAGE_UNIFORMS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET, stream);
+
+ // GLES31 capabilities are a superset of GLES3
+ LogGles3Capabilities(stream);
+}
+
+static void LogGles32Capabilities(std::ostream &stream)
+{
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_DEBUG_GROUP_STACK_DEPTH, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_DEBUG_LOGGED_MESSAGES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_DEBUG_MESSAGE_LENGTH, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_INTERPOLATION_OFFSET, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAMEBUFFER_LAYERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_ATOMIC_COUNTERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_IMAGE_UNIFORMS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_INPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_OUTPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_OUTPUT_VERTICES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_SHADER_INVOCATIONS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_UNIFORM_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_LABEL_LENGTH, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_PATCH_VERTICES, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_INPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_GEN_LEVEL, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_PATCH_COMPONENTS, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MAX_TEXTURE_BUFFER_SIZE, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MIN_FRAGMENT_INTERPOLATION_OFFSET, stream);
+ QUERY_AND_LOG_CAPABILITY(GL_MIN_SAMPLE_SHADING_VALUE, stream);
+
+ // GLES32 capabilities are a superset of GLES31
+ LogGles31Capabilities(stream);
+}
+
+// Prints GLES Capabilities listed at
+// https://opengles.gpuinfo.org/listcapabilities.php
+// in CSV format
+TEST_P(EGLPrintEGLinfoTest, PrintGLESCapabilities)
+{
+ std::cout << std::endl << "Capability name, value" << std::endl << std::endl;
+
+ std::ostream &stream = std::cout;
+
+ switch (getClientMajorVersion())
+ {
+ case 3:
+ switch (getClientMinorVersion())
+ {
+ case 2:
+ LogGles32Capabilities(stream);
+ break;
+ case 1:
+ LogGles31Capabilities(stream);
+ break;
+ case 0:
+ LogGles3Capabilities(stream);
+ break;
+ default:
+ FAIL() << "unknown client minor version.";
+ }
+ break;
+ case 2:
+ LogGles2Capabilities(stream);
+ break;
+ default:
+ FAIL() << "unknown client major version.";
+ }
+
+ stream << std::endl;
+}
+
+// Print the EGL configs with attributes
+TEST_P(EGLPrintEGLinfoTest, PrintConfigInfo)
+{
+ // Get all the configs
+ EGLint count;
+ EXPECT_EGL_TRUE(eglGetConfigs(mDisplay, nullptr, 0, &count));
+ EXPECT_TRUE(count > 0);
+ std::vector<EGLConfig> configs(count);
+ EXPECT_EGL_TRUE(eglGetConfigs(mDisplay, configs.data(), count, &count));
+ configs.resize(count);
+ // sort configs by increaing ID
+ std::sort(configs.begin(), configs.end(), [this](EGLConfig a, EGLConfig b) -> bool {
+ return GetAttrib(mDisplay, a, EGL_CONFIG_ID) < GetAttrib(mDisplay, b, EGL_CONFIG_ID);
+ });
+
+ std::cout << "Configs - Count: " << count << std::endl;
+
+ // For each config, print its attributes
+ for (auto config : configs)
+ {
+ // Config ID
+ std::cout << " Config: " << GetAttrib(mDisplay, config, EGL_CONFIG_ID) << std::endl;
+
+ // Color
+ const char *componentType = (GetAttrib(mDisplay, config, EGL_COLOR_COMPONENT_TYPE_EXT) ==
+ EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT)
+ ? "Float "
+ : "Fixed ";
+ const char *colorBuffType =
+ (GetAttrib(mDisplay, config, EGL_COLOR_BUFFER_TYPE) == EGL_LUMINANCE_BUFFER)
+ ? "LUMINANCE"
+ : "RGB";
+ std::cout << "\tColor:" << GetAttrib(mDisplay, config, EGL_BUFFER_SIZE) << "bit "
+ << componentType << colorBuffType
+ << " Red:" << GetAttrib(mDisplay, config, EGL_RED_SIZE)
+ << " Green:" << GetAttrib(mDisplay, config, EGL_GREEN_SIZE)
+ << " Blue:" << GetAttrib(mDisplay, config, EGL_BLUE_SIZE)
+ << " Alpha:" << GetAttrib(mDisplay, config, EGL_ALPHA_SIZE)
+ << " Lum:" << GetAttrib(mDisplay, config, EGL_LUMINANCE_SIZE)
+ << " AlphaMask:" << GetAttrib(mDisplay, config, EGL_ALPHA_MASK_SIZE) << std::endl;
+
+ // Texture Binding
+ std::cout << "\tBinding RGB:" << (bool)GetAttrib(mDisplay, config, EGL_BIND_TO_TEXTURE_RGB)
+ << " RGBA:" << (bool)GetAttrib(mDisplay, config, EGL_BIND_TO_TEXTURE_RGBA)
+ << " MaxWidth:" << GetAttrib(mDisplay, config, EGL_MAX_PBUFFER_WIDTH)
+ << " MaxHeight:" << GetAttrib(mDisplay, config, EGL_MAX_PBUFFER_HEIGHT)
+ << " MaxPixels:" << GetAttrib(mDisplay, config, EGL_MAX_PBUFFER_PIXELS)
+ << std::endl;
+
+ // Conformant
+ EGLint caveatAttrib = GetAttrib(mDisplay, config, EGL_CONFIG_CAVEAT);
+ const char *caveat = nullptr;
+ switch (caveatAttrib)
+ {
+ case EGL_NONE:
+ caveat = "None.";
+ break;
+ case EGL_SLOW_CONFIG:
+ caveat = "Slow.";
+ break;
+ case EGL_NON_CONFORMANT_CONFIG:
+ caveat = "Non-Conformant.";
+ break;
+ default:
+ caveat = ".";
+ }
+ std::cout << "\tCaveate: " << caveat;
+
+ EGLint conformant = GetAttrib(mDisplay, config, EGL_CONFORMANT);
+ std::cout << " Conformant: ";
+ if (conformant & EGL_OPENGL_BIT)
+ std::cout << "OpenGL ";
+ if (conformant & EGL_OPENGL_ES_BIT)
+ std::cout << "ES1 ";
+ if (conformant & EGL_OPENGL_ES2_BIT)
+ std::cout << "ES2 ";
+ if (conformant & EGL_OPENGL_ES3_BIT)
+ std::cout << "ES3";
+ std::cout << std::endl;
+
+ // Ancilary buffers
+ std::cout << "\tAncilary "
+ << "Depth:" << GetAttrib(mDisplay, config, EGL_DEPTH_SIZE)
+ << " Stencil:" << GetAttrib(mDisplay, config, EGL_STENCIL_SIZE)
+ << " SampleBuffs:" << GetAttrib(mDisplay, config, EGL_SAMPLE_BUFFERS)
+ << " Samples:" << GetAttrib(mDisplay, config, EGL_SAMPLES) << std::endl;
+
+ // Swap interval
+ std::cout << "\tSwap Interval"
+ << " Min:" << GetAttrib(mDisplay, config, EGL_MIN_SWAP_INTERVAL)
+ << " Max:" << GetAttrib(mDisplay, config, EGL_MAX_SWAP_INTERVAL) << std::endl;
+
+ // Native
+ std::cout << "\tNative Renderable: " << GetAttrib(mDisplay, config, EGL_NATIVE_RENDERABLE)
+ << ", VisualID: " << GetAttrib(mDisplay, config, EGL_NATIVE_VISUAL_ID)
+ << ", VisualType: " << GetAttrib(mDisplay, config, EGL_NATIVE_VISUAL_TYPE)
+ << std::endl;
+
+ // Surface type
+ EGLint surfaceType = GetAttrib(mDisplay, config, EGL_SURFACE_TYPE);
+ std::cout << "\tSurface Type: ";
+ if (surfaceType & EGL_WINDOW_BIT)
+ std::cout << "WINDOW ";
+ if (surfaceType & EGL_PIXMAP_BIT)
+ std::cout << "PIXMAP ";
+ if (surfaceType & EGL_PBUFFER_BIT)
+ std::cout << "PBUFFER ";
+ if (surfaceType & EGL_MULTISAMPLE_RESOLVE_BOX_BIT)
+ std::cout << "MULTISAMPLE_RESOLVE_BOX ";
+ if (surfaceType & EGL_SWAP_BEHAVIOR_PRESERVED_BIT)
+ std::cout << "SWAP_PRESERVE ";
+ std::cout << std::endl;
+
+ // Renderable
+ EGLint rendType = GetAttrib(mDisplay, config, EGL_RENDERABLE_TYPE);
+ std::cout << "\tRender: ";
+ if (rendType & EGL_OPENGL_BIT)
+ std::cout << "OpenGL ";
+ if (rendType & EGL_OPENGL_ES_BIT)
+ std::cout << "ES1 ";
+ if (rendType & EGL_OPENGL_ES2_BIT)
+ std::cout << "ES2 ";
+ if (rendType & EGL_OPENGL_ES3_BIT)
+ std::cout << "ES3 ";
+ std::cout << std::endl;
+
+ // Extensions
+ std::cout << "\tAndroid Recordable: " << GetAttrib(mDisplay, config, EGL_RECORDABLE_ANDROID)
+ << std::endl;
+
+ // Separator between configs
+ std::cout << std::endl;
+ }
+}
+
+ANGLE_INSTANTIATE_TEST(EGLPrintEGLinfoTest, ES2_VULKAN(), ES3_VULKAN());
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLRecordableTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLRecordableTest.cpp
index 60fcc03..3d8f90d 100644
--- a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLRecordableTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLRecordableTest.cpp
@@ -63,4 +63,4 @@
} // namespace angle
-ANGLE_INSTANTIATE_TEST(EGLRecordableTest, ES2_D3D11(), ES2_OPENGL(), ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(EGLRecordableTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLStreamTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLStreamTest.cpp
index 66021a8..3c7d7c9 100644
--- a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLStreamTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLStreamTest.cpp
@@ -836,5 +836,5 @@
ES2_OPENGL(),
ES3_OPENGL(),
ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(D3D11TextureStreamSamplingTest, ES2_D3D11(), ES3_D3D11());
+ANGLE_INSTANTIATE_TEST(D3D11TextureStreamSamplingTest, ES2_D3D11(), ES3_D3D11(), ES31_D3D11());
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/AtomicCounterBufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/AtomicCounterBufferTest.cpp
index 928a30f..899eac3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/AtomicCounterBufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/AtomicCounterBufferTest.cpp
@@ -437,7 +437,10 @@
// is with WGL where if a Vulkan test is run first in the shard, it causes crashes when an OpenGL
// test is run afterwards. AtomicCounter* tests are alphabetically first, and having them not run
// on Vulkan makes every shard our bots currently make do have at least some OpenGL test run before
-// any Vulkan test.
+// any Vulkan test. When these tests can be enabled on Vulkan, can replace the current macros with
+// the updated macros below that include Vulkan:
+// ANGLE_INSTANTIATE_TEST_ES3_AND_ES31(AtomicCounterBufferTest);
+// ANGLE_INSTANTIATE_TEST_ES31(AtomicCounterBufferTest31);
ANGLE_INSTANTIATE_TEST(AtomicCounterBufferTest,
ES3_OPENGL(),
ES3_OPENGLES(),
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/AttributeLayoutTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/AttributeLayoutTest.cpp
index 22a5602..441a5f6 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/AttributeLayoutTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/AttributeLayoutTest.cpp
@@ -473,12 +473,8 @@
Run(false);
}
-#define PARAMS \
- ES2_VULKAN(), ES2_OPENGL(), ES2_D3D9(), ES2_D3D11(), ES3_OPENGL(), ES2_OPENGLES(), \
- ES3_OPENGLES(), ES3_VULKAN()
-
-ANGLE_INSTANTIATE_TEST(AttributeLayoutNonIndexed, PARAMS);
-ANGLE_INSTANTIATE_TEST(AttributeLayoutMemoryIndexed, PARAMS);
-ANGLE_INSTANTIATE_TEST(AttributeLayoutBufferIndexed, PARAMS);
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(AttributeLayoutNonIndexed);
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(AttributeLayoutMemoryIndexed);
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(AttributeLayoutBufferIndexed);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BPTCCompressedTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BPTCCompressedTextureTest.cpp
index 9d71e5a..28f42bb 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BPTCCompressedTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BPTCCompressedTextureTest.cpp
@@ -367,14 +367,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(BPTCCompressedTextureTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(BPTCCompressedTextureTest);
-ANGLE_INSTANTIATE_TEST(BPTCCompressedTextureTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3(BPTCCompressedTextureTestES3);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BindGeneratesResourceTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BindGeneratesResourceTest.cpp
index e2582eb..ab58734 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BindGeneratesResourceTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BindGeneratesResourceTest.cpp
@@ -110,14 +110,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(BindGeneratesResourceTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(BindGeneratesResourceTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BindUniformLocationTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BindUniformLocationTest.cpp
index 3fb0537..eabb2ac 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BindUniformLocationTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BindUniformLocationTest.cpp
@@ -535,13 +535,8 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(BindUniformLocationTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(BindUniformLocationTest);
-ANGLE_INSTANTIATE_TEST(BindUniformLocationES31Test, ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES31(BindUniformLocationES31Test);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendFuncExtendedTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendFuncExtendedTest.cpp
index f06052b..4220eb9 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendFuncExtendedTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendFuncExtendedTest.cpp
@@ -707,29 +707,8 @@
glDeleteProgram(program);
}
-ANGLE_INSTANTIATE_TEST(EXTBlendFuncExtendedTest,
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(EXTBlendFuncExtendedTestES3,
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES31_OPENGL(),
- ES31_OPENGLES(),
- ES3_VULKAN(),
- ES31_VULKAN());
-ANGLE_INSTANTIATE_TEST(EXTBlendFuncExtendedDrawTest,
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(EXTBlendFuncExtendedDrawTestES3,
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES31_OPENGL(),
- ES31_OPENGLES(),
- ES3_VULKAN(),
- ES31_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(EXTBlendFuncExtendedTest);
+ANGLE_INSTANTIATE_TEST_ES3_AND_ES31(EXTBlendFuncExtendedTestES3);
+
+ANGLE_INSTANTIATE_TEST_ES2(EXTBlendFuncExtendedDrawTest);
+ANGLE_INSTANTIATE_TEST_ES3_AND_ES31(EXTBlendFuncExtendedDrawTestES3);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendMinMaxTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendMinMaxTest.cpp
index a2f01bc..a01389e 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendMinMaxTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendMinMaxTest.cpp
@@ -102,7 +102,16 @@
{
EXPECT_NEAR(
getExpected(blendMin, color.values[componentIdx], prevColor[componentIdx]),
- pixel[componentIdx], errorRange);
+ pixel[componentIdx], errorRange)
+ << " blendMin=" << blendMin << " componentIdx=" << componentIdx << std::endl
+ << " color.values[0]=" << color.values[0]
+ << " prevColor[0]=" << prevColor[0] << std::endl
+ << " color.values[1]=" << color.values[1]
+ << " prevColor[1]=" << prevColor[1] << std::endl
+ << " color.values[2]=" << color.values[2]
+ << " prevColor[2]=" << prevColor[2] << std::endl
+ << " color.values[3]=" << color.values[3]
+ << " prevColor[3]=" << prevColor[3];
}
}
@@ -181,18 +190,12 @@
{
ANGLE_SKIP_TEST_IF(getClientMajorVersion() < 3 &&
!IsGLExtensionEnabled("GL_EXT_color_buffer_half_float"));
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
runTest(GL_RGBA16F, GL_FLOAT);
}
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(BlendMinMaxTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(BlendMinMaxTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlitFramebufferANGLETest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlitFramebufferANGLETest.cpp
index a4158ff..4f0d60e 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlitFramebufferANGLETest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlitFramebufferANGLETest.cpp
@@ -1223,6 +1223,9 @@
// clearDepth && !maskDepth fails on Intel Ubuntu 19.04 Mesa 19.0.2 GL. http://anglebug.com/3614
ANGLE_SKIP_TEST_IF(IsLinux() && IsIntel() && IsDesktopOpenGL());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid() && IsOpenGLES());
+
GLRenderbuffer depthMS;
glBindRenderbuffer(GL_RENDERBUFFER, depthMS.get());
glRenderbufferStorageMultisample(GL_RENDERBUFFER, 2, GL_DEPTH_COMPONENT24, 256, 256);
@@ -2000,4 +2003,4 @@
ES2_VULKAN(),
ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(BlitFramebufferTest, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(BlitFramebufferTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BufferDataTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BufferDataTest.cpp
index 3e63fca..9a6782b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BufferDataTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BufferDataTest.cpp
@@ -292,6 +292,8 @@
// https://code.google.com/p/angleproject/issues/detail?id=709
TEST_P(IndexedBufferCopyTest, IndexRangeBug)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(geofflang): Figure out why this fails on AMD OpenGL (http://anglebug.com/1291)
ANGLE_SKIP_TEST_IF(IsAMD() && IsOpenGL());
@@ -538,18 +540,9 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(BufferDataTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(BufferDataTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(IndexedBufferCopyTest,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(BufferDataTest);
+ANGLE_INSTANTIATE_TEST_ES3(BufferDataTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(IndexedBufferCopyTest);
#ifdef _WIN64
@@ -568,6 +561,8 @@
{
// http://anglebug.com/3786: flaky timeout on Win10 FYI x64 Release (NVIDIA GeForce GTX 1660)
ANGLE_SKIP_TEST_IF(IsWindows() && IsNVIDIA() && IsD3D11());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsWindows() && (IsVulkan() || IsOpenGL()));
// These values are special, to trigger the rounding bug.
unsigned int numItems = 0x7FFFFFE;
@@ -666,6 +661,6 @@
EXPECT_GL_ERROR(GL_INVALID_VALUE);
}
-ANGLE_INSTANTIATE_TEST(BufferDataOverflowTest, ES3_D3D11());
+ANGLE_INSTANTIATE_TEST_ES3(BufferDataOverflowTest);
#endif // _WIN64
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BuiltinVariableTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BuiltinVariableTest.cpp
index 36932fd..da4764d 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BuiltinVariableTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BuiltinVariableTest.cpp
@@ -195,11 +195,7 @@
runTest(GL_TRIANGLES, indices, 6);
}
-ANGLE_INSTANTIATE_TEST(BuiltinVariableVertexIdTest,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(BuiltinVariableVertexIdTest);
class BuiltinVariableFragDepthClampingFloatRBOTest : public ANGLETest
{
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ClearTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ClearTest.cpp
index fd37167..17f5874 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ClearTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ClearTest.cpp
@@ -622,6 +622,8 @@
// clears to the correct values.
TEST_P(ClearTestES3, ClearMultipleAttachmentsFollowedBySpecificOne)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr uint32_t kSize = 16;
constexpr uint32_t kAttachmentCount = 5;
std::vector<unsigned char> pixelData(kSize * kSize * 4, 255);
@@ -1461,17 +1463,8 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(ClearTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(ClearTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(ClearTest);
+ANGLE_INSTANTIATE_TEST_ES3(ClearTestES3);
ANGLE_INSTANTIATE_TEST_COMBINE_4(MaskedScissoredClearTest,
MaskedScissoredClearVariationsTestPrint,
testing::Range(0, 3),
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ClientArraysTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ClientArraysTest.cpp
index 7820731..18b8a66 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ClientArraysTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ClientArraysTest.cpp
@@ -108,13 +108,5 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(ClientArraysTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(ClientArraysTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ColorMaskTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ColorMaskTest.cpp
index 6075cf6..6f76089 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ColorMaskTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ColorMaskTest.cpp
@@ -73,13 +73,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against. D3D11 Feature Level 9_3 uses different D3D formats for vertex
// attribs compared to Feature Levels 10_0+, so we should test them separately.
-ANGLE_INSTANTIATE_TEST(ColorMaskTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(ColorMaskTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp
index 48f2d99..11f9881 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp
@@ -872,6 +872,8 @@
// Test that texelFetch works well in compute shader.
TEST_P(ComputeShaderTest, TexelFetchFunction)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kCS[] = R"(#version 310 es
layout(local_size_x=16, local_size_y=16) in;
precision highp usampler2D;
@@ -940,6 +942,8 @@
// Test that texture function works well in compute shader.
TEST_P(ComputeShaderTest, TextureFunction)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kCS[] = R"(#version 310 es
layout(local_size_x=16, local_size_y=16) in;
precision highp usampler2D;
@@ -2694,6 +2698,11 @@
// http://anglebug.com/3869
ANGLE_SKIP_TEST_IF(IsVulkan());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid() && IsOpenGLES());
+ ANGLE_SKIP_TEST_IF(IsOpenGL() &&
+ ((getClientMajorVersion() == 3) && (getClientMinorVersion() >= 1)));
+
const char kCSShader[] = R"(#version 310 es
layout (local_size_x = 4, local_size_y = 4, local_size_z = 1) in;
layout (r32ui, binding = 0) readonly uniform highp uimage2D srcImage;
@@ -2736,8 +2745,6 @@
{
// glReadPixels is getting the result of the first dispatch call. http://anglebug.com/3879
ANGLE_SKIP_TEST_IF(IsVulkan() && IsWindows() && (IsAMD() || IsNVIDIA()));
- // Flaky on Linux FYI Release (Intel HD 630). http://anglebug.com/3934
- ANGLE_SKIP_TEST_IF(IsVulkan() && IsLinux() && IsIntel());
GLTexture texture[2];
GLFramebuffer framebuffer;
@@ -2810,6 +2817,8 @@
// Test storage buffer bound is unchanged, shader writes it, buffer content should be updated.
TEST_P(ComputeShaderTest, StorageBufferBoundUnchanged)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kCS[] = R"(#version 310 es
layout(local_size_x=16, local_size_y=16) in;
precision highp usampler2D;
@@ -3012,9 +3021,6 @@
// TODO(xinghua.cao@intel.com): http://anglebug.com/3101
ANGLE_SKIP_TEST_IF(IsIntel() && IsLinux() && IsOpenGL());
- // Non-zero-level render target attachments are not yet supported. http://anglebug.com/3184
- ANGLE_SKIP_TEST_IF(IsVulkan());
-
GLTexture texture[2];
GLFramebuffer framebuffer;
constexpr char kCS[] = R"(#version 310 es
@@ -3513,11 +3519,151 @@
glUnmapBuffer(GL_SHADER_STORAGE_BUFFER);
}
-ANGLE_INSTANTIATE_TEST(ComputeShaderTest,
- ES31_OPENGL(),
- ES31_OPENGLES(),
- ES31_D3D11(),
- ES31_VULKAN());
-ANGLE_INSTANTIATE_TEST(ComputeShaderTestES3, ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(WebGL2ComputeTest, ES31_D3D11(), ES31_VULKAN());
+// Test that render pipeline and compute pipeline access to the same texture.
+// Steps:
+// 1. Clear the texture and DrawArrays.
+// 2. DispatchCompute to set the image's first pixel to a specific color.
+// 3. DrawArrays and check data.
+TEST_P(ComputeShaderTest, DrawDispatchDrawPreserve)
+{
+ const char kCSSource[] = R"(#version 310 es
+layout(local_size_x=1, local_size_y=1) in;
+layout(rgba8, binding = 0) writeonly uniform highp image2D image;
+void main()
+{
+ imageStore(image, ivec2(0, 0), vec4(0.0, 0.0, 1.0, 1.0));
+})";
+
+ const char kVSSource[] = R"(#version 310 es
+layout (location = 0) in vec2 pos;
+in vec4 inTex;
+out vec4 texCoord;
+void main(void) {
+ texCoord = inTex;
+ gl_Position = vec4(pos, 0.0, 1.0);
+})";
+
+ const char kFSSource[] = R"(#version 310 es
+precision highp float;
+uniform sampler2D tex;
+in vec4 texCoord;
+out vec4 fragColor;
+void main(void) {
+ fragColor = texture(tex, texCoord.xy);
+})";
+ GLuint aPosLoc = 0;
+ ANGLE_GL_PROGRAM(program, kVSSource, kFSSource);
+ glBindAttribLocation(program, aPosLoc, "pos");
+
+ unsigned char *data = new unsigned char[4 * getWindowWidth() * getWindowHeight()];
+ for (int i = 0; i < getWindowWidth() * getWindowHeight(); i++)
+ {
+ data[i * 4] = 0xff;
+ data[i * 4 + 1] = 0;
+ data[i * 4 + 2] = 0;
+ data[i * 4 + 3] = 0xff;
+ }
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexStorage2D(GL_TEXTURE_2D, 2, GL_RGBA8, getWindowWidth(), getWindowHeight());
+ // Clear the texture level 0 to Red.
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, getWindowWidth(), getWindowHeight(), GL_RGBA,
+ GL_UNSIGNED_BYTE, data);
+ for (int i = 0; i < getWindowWidth() * getWindowHeight(); i++)
+ {
+ data[i * 4] = 0;
+ data[i * 4 + 1] = 0xff;
+ data[i * 4 + 2] = 0;
+ data[i * 4 + 3] = 0xff;
+ }
+ // Clear the texture level 1 to Green.
+ glTexSubImage2D(GL_TEXTURE_2D, 1, 0, 0, getWindowWidth() / 2, getWindowHeight() / 2, GL_RGBA,
+ GL_UNSIGNED_BYTE, data);
+ delete[] data;
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glUseProgram(program);
+ GLfloat vertices[] = {-1, -1, 1, -1, -1, 1, 1, 1};
+ GLfloat texCoords[] = {0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f};
+ GLint pos = glGetAttribLocation(program, "pos");
+ glEnableVertexAttribArray(pos);
+ glVertexAttribPointer(pos, 2, GL_FLOAT, GL_FALSE, 0, vertices);
+ GLint posTex = glGetAttribLocation(program, "inTex");
+ glEnableVertexAttribArray(posTex);
+ glVertexAttribPointer(posTex, 2, GL_FLOAT, GL_FALSE, 0, texCoords);
+
+ // Draw with level 0, the whole frame buffer should be Red.
+ glViewport(0, 0, getWindowWidth(), getWindowHeight());
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ EXPECT_GL_NO_ERROR();
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
+ EXPECT_PIXEL_COLOR_EQ(1, 1, GLColor::red);
+ EXPECT_PIXEL_COLOR_EQ(getWindowWidth() - 1, getWindowHeight() - 1, GLColor::red);
+ // Draw with level 1, the whole frame buffer should be Green.
+ glViewport(0, 0, getWindowWidth() / 2, getWindowHeight() / 2);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+ EXPECT_PIXEL_COLOR_EQ(1, 1, GLColor::green);
+ EXPECT_PIXEL_COLOR_EQ(getWindowWidth() / 2 - 1, getWindowHeight() / 2 - 1, GLColor::green);
+
+ // Clear the texture level 0's (0, 0) position to Blue.
+ glBindImageTexture(0, texture, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA8);
+ ANGLE_GL_COMPUTE_PROGRAM(csProgram, kCSSource);
+ glUseProgram(csProgram);
+ glDispatchCompute(1, 1, 1);
+ glMemoryBarrier(GL_TEXTURE_FETCH_BARRIER_BIT);
+ EXPECT_GL_NO_ERROR();
+ glFinish();
+
+ glUseProgram(program);
+ // Draw with level 0, the first position should be Blue.
+ glViewport(0, 0, getWindowWidth(), getWindowHeight());
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::blue);
+ EXPECT_PIXEL_COLOR_EQ(1, 1, GLColor::red);
+ EXPECT_PIXEL_COLOR_EQ(getWindowWidth() - 1, getWindowHeight() - 1, GLColor::red);
+ // Draw with level 1, the whole frame buffer should be Green.
+ glViewport(0, 0, getWindowWidth() / 2, getWindowHeight() / 2);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+ EXPECT_PIXEL_COLOR_EQ(1, 1, GLColor::green);
+ EXPECT_PIXEL_COLOR_EQ(getWindowWidth() / 2 - 1, getWindowHeight() / 2 - 1, GLColor::green);
+}
+
+// Test that maxComputeWorkGroupCount is valid number.
+TEST_P(ComputeShaderTest, ValidateMaxComputeWorkGroupCount)
+{
+ constexpr char kCS[] = R"(#version 310 es
+layout(local_size_x=1) in;
+void main()
+{
+})";
+
+ GLuint program = glCreateProgram();
+ GLuint cs = CompileShader(GL_COMPUTE_SHADER, kCS);
+ EXPECT_NE(0u, cs);
+
+ glAttachShader(program, cs);
+ glDeleteShader(cs);
+
+ GLint x, y, z;
+ glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 0, &x);
+ EXPECT_LE(65535, x);
+ EXPECT_GE(std::numeric_limits<GLint>::max(), x);
+
+ glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 1, &y);
+ EXPECT_LE(65535, y);
+ EXPECT_GE(std::numeric_limits<GLint>::max(), y);
+
+ glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 2, &z);
+ EXPECT_LE(65535, z);
+ EXPECT_GE(std::numeric_limits<GLint>::max(), z);
+
+ glDeleteProgram(program);
+ EXPECT_GL_NO_ERROR();
+}
+
+ANGLE_INSTANTIATE_TEST_ES31(ComputeShaderTest);
+ANGLE_INSTANTIATE_TEST_ES3(ComputeShaderTestES3);
+ANGLE_INSTANTIATE_TEST_ES31(WebGL2ComputeTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyCompressedTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyCompressedTextureTest.cpp
index 6206697..a3c4b21 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyCompressedTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyCompressedTextureTest.cpp
@@ -319,6 +319,8 @@
{
return;
}
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
glBindTexture(GL_TEXTURE_2D, mTextures[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
@@ -343,14 +345,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(CopyCompressedTextureTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(CopyCompressedTextureTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp
index fad1c33..d58748e 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp
@@ -428,6 +428,9 @@
// Calling CopyTexSubImage to a non-cube-complete texture.
TEST_P(CopyTexImageTest, CopyTexSubImageToNonCubeCompleteDestination)
{
+ // TODO(hqle): Find what wrong with NVIDIA GPU. http://anglebug.com/4137
+ ANGLE_SKIP_TEST_IF(IsNVIDIA() && IsMetal());
+
constexpr GLsizei kCubeMapFaceCount = 6;
// The framebuffer will be a 1x6 image with 6 different colors. Each glCopyTexSubImage2D will
@@ -809,9 +812,5 @@
ES2_VULKAN(),
ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(CopyTexImageTestES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(CopyTexImageTestES3);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexture3DTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexture3DTest.cpp
index f8ca1bf..e4a7084 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexture3DTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexture3DTest.cpp
@@ -1726,7 +1726,7 @@
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, true, GLColor(255, 214, 81, 3));
}
-ANGLE_INSTANTIATE_TEST(Texture3DCopy, ES3_D3D11());
-ANGLE_INSTANTIATE_TEST(Texture2DArrayCopy, ES3_D3D11());
+ANGLE_INSTANTIATE_TEST_ES3(Texture3DCopy);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DArrayCopy);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTextureTest.cpp
index c9a619f..7d4d86d 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTextureTest.cpp
@@ -867,6 +867,8 @@
TEST_P(CopyTextureVariationsTest, CopyTexture)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
testCopyTexture(GL_TEXTURE_2D, std::get<1>(GetParam()), std::get<2>(GetParam()),
std::get<3>(GetParam()), std::get<4>(GetParam()), std::get<5>(GetParam()));
}
@@ -1562,6 +1564,8 @@
// are set to 0.
TEST_P(CopyTextureTestDest, AlphaCopyWithRGB)
{
+ // http://anglebug.com/4121
+ ANGLE_SKIP_TEST_IF(IsIntel() && IsLinux() && IsOpenGLES());
ANGLE_SKIP_TEST_IF(!checkExtensions());
GLColor originalPixels(50u, 100u, 150u, 155u);
@@ -1587,6 +1591,62 @@
EXPECT_PIXEL_COLOR_EQ(0, 0, expectedPixels);
}
+// Bug where TEXTURE_SWIZZLE_RGBA was not reset after the Luminance workaround. (crbug.com/1022080)
+TEST_P(CopyTextureTestES3, LuminanceWorkaroundTextureSwizzleBug)
+{
+
+ {
+ GLColor pixels(50u, 20u, 100u, 150u);
+
+ // Hit BlitGL::copySubImageToLUMAWorkaroundTexture by copying an ALPHA texture
+ GLTexture srcTexture;
+ glBindTexture(GL_TEXTURE_2D, srcTexture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, &pixels);
+
+ GLFramebuffer srcFBO;
+ glBindFramebuffer(GL_FRAMEBUFFER, srcFBO);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, srcTexture, 0);
+
+ GLTexture dstTexture;
+ glBindTexture(GL_TEXTURE_2D, dstTexture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 1, 1, 0, GL_ALPHA, GL_UNSIGNED_BYTE, nullptr);
+
+ glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1);
+ EXPECT_GL_NO_ERROR();
+ }
+
+ {
+ // This time hit BlitGL::blitColorBufferWithShader by copying an SRGB texture
+ GLColor pixels(100u, 200u, 50u, 210u);
+
+ GLTexture srcTexture;
+ glBindTexture(GL_TEXTURE_2D, srcTexture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB_ALPHA_EXT, 1, 1, 0, GL_SRGB_ALPHA_EXT,
+ GL_UNSIGNED_BYTE, &pixels);
+
+ GLFramebuffer srcFBO;
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, srcFBO);
+ glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, srcTexture,
+ 0);
+
+ GLTexture dstTexture;
+ glBindTexture(GL_TEXTURE_2D, dstTexture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB_ALPHA_EXT, 1, 1, 0, GL_SRGB_ALPHA_EXT,
+ GL_UNSIGNED_BYTE, nullptr);
+
+ GLFramebuffer dstFBO;
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, dstFBO);
+ glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, dstTexture,
+ 0);
+
+ glBlitFramebuffer(0, 0, 1, 1, 0, 0, 1, 1, GL_COLOR_BUFFER_BIT, GL_NEAREST);
+
+ // The previous workaround should not affect this copy
+ glBindFramebuffer(GL_FRAMEBUFFER, dstFBO);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, pixels);
+ }
+}
+
// Test to ensure that CopyTexture will fail with a non-zero level and NPOT texture in WebGL
TEST_P(CopyTextureTestWebGL, NPOT)
{
@@ -1623,6 +1683,8 @@
{
return;
}
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid() || IsVulkan());
auto testOutput = [this](GLuint texture, const GLColor &expectedColor) {
constexpr char kVS[] =
@@ -1760,6 +1822,8 @@
}
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_color_buffer_float"));
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
auto testOutput = [this](GLuint texture, const GLColor32F &expectedColor) {
constexpr char kVS[] =
@@ -1875,6 +1939,8 @@
TEST_P(CopyTextureTestES3, ES3UintFormats)
{
ANGLE_SKIP_TEST_IF(IsLinux() && IsOpenGL() && IsIntel());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
if (!checkExtensions())
{
@@ -1991,12 +2057,7 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(CopyTextureTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(CopyTextureTest);
ANGLE_INSTANTIATE_TEST_COMBINE_5(CopyTextureVariationsTest,
CopyTextureVariationsTestPrint,
testing::ValuesIn(kCopyTextureVariationsSrcFormats),
@@ -2009,13 +2070,12 @@
ES2_OPENGL(),
ES2_OPENGLES(),
ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(CopyTextureTestWebGL,
- ES2_D3D9(),
+ANGLE_INSTANTIATE_TEST_ES2(CopyTextureTestWebGL);
+ANGLE_INSTANTIATE_TEST(CopyTextureTestDest,
ES2_D3D11(),
ES2_OPENGL(),
ES2_OPENGLES(),
ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(CopyTextureTestDest, ES2_D3D11());
-ANGLE_INSTANTIATE_TEST(CopyTextureTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3(CopyTextureTestES3);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CubeMapTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CubeMapTextureTest.cpp
index a0f5a44..2030144 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CubeMapTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CubeMapTextureTest.cpp
@@ -62,6 +62,9 @@
// http://anglebug.com/3145
ANGLE_SKIP_TEST_IF(IsVulkan() && IsIntel() && IsFuchsia());
+ // TODO(hqle): Find what wrong with NVIDIA GPU. http://anglebug.com/4138
+ ANGLE_SKIP_TEST_IF(IsNVIDIA() && IsMetal());
+
const GLfloat faceColors[] = {
1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f,
1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f,
@@ -230,6 +233,8 @@
// within each face. See section 3.7.5 of GLES2.0 (Cube Map Texture Selection).
TEST_P(CubeMapTextureTest, SampleCoordinateTransform)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsWindows() && IsD3D9());
// Create a program that samples from 6x4 directions of the cubemap, draw and verify that the
// colors match the right color from |faceColors|.
constexpr char kFS[] = R"(precision mediump float;
@@ -274,6 +279,8 @@
ANGLE_SKIP_TEST_IF(IsAndroid() && IsVulkan()); // anglebug.com/3814
ANGLE_SKIP_TEST_IF(IsD3D11()); // anglebug.com/3856
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_shader_texture_lod"));
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsWindows() && IsD3D9());
constexpr char kFS[] = R"(#extension GL_EXT_shader_texture_lod : require
precision mediump float;
@@ -315,11 +322,4 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(CubeMapTextureTest,
- ES2_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(CubeMapTextureTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11EmulatedIndexedBufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11EmulatedIndexedBufferTest.cpp
index 7c4ec33..c96124f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11EmulatedIndexedBufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11EmulatedIndexedBufferTest.cpp
@@ -187,6 +187,6 @@
SafeDelete(cleanSourceBuffer);
}
-ANGLE_INSTANTIATE_TEST(D3D11EmulatedIndexedBufferTest, ES2_D3D11());
+ANGLE_INSTANTIATE_TEST(D3D11EmulatedIndexedBufferTest, ES2_D3D11(), ES3_D3D11(), ES31_D3D11());
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11InputLayoutCacheTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11InputLayoutCacheTest.cpp
index bca7830..42a9bf9 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11InputLayoutCacheTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11InputLayoutCacheTest.cpp
@@ -121,6 +121,6 @@
}
}
-ANGLE_INSTANTIATE_TEST(D3D11InputLayoutCacheTest, ES2_D3D11());
+ANGLE_INSTANTIATE_TEST(D3D11InputLayoutCacheTest, ES2_D3D11(), ES3_D3D11(), ES31_D3D11());
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3DImageFormatConversionTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3DImageFormatConversionTest.cpp
index 5ca24c7..6404add 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3DImageFormatConversionTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3DImageFormatConversionTest.cpp
@@ -159,10 +159,6 @@
// imageformats.h from the D3D renderer), we can still run the test against OpenGL. This is
// valuable, since it provides extra validation using a renderer that doesn't use imageformats.h
// itself.
-ANGLE_INSTANTIATE_TEST(D3DImageFormatConversionTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(D3DImageFormatConversionTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3DTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3DTextureTest.cpp
index 5f31fd1..8142182 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3DTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/D3DTextureTest.cpp
@@ -1438,8 +1438,8 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(D3DTextureTest, ES2_D3D9(), ES2_D3D11(), ES2_OPENGL(), ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(D3DTextureTestES3, ES3_D3D11(), ES3_OPENGL());
+ANGLE_INSTANTIATE_TEST_ES2(D3DTextureTest);
+ANGLE_INSTANTIATE_TEST_ES3(D3DTextureTestES3);
// D3D Debug device reports an error. http://anglebug.com/3513
// ANGLE_INSTANTIATE_TEST(D3DTextureTestMS, ES2_D3D11());
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DXT1CompressedTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DXT1CompressedTextureTest.cpp
index be85ef2..4278488 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DXT1CompressedTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DXT1CompressedTextureTest.cpp
@@ -412,15 +412,8 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(DXT1CompressedTextureTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(DXT1CompressedTextureTest);
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(DXT1CompressedTextureTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3(DXT1CompressedTextureTestES3);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DXTSRGBCompressedTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DXTSRGBCompressedTextureTest.cpp
index 86c2abb..4d3b9db 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DXTSRGBCompressedTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DXTSRGBCompressedTextureTest.cpp
@@ -147,11 +147,4 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(DXTSRGBCompressedTextureTest,
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(DXTSRGBCompressedTextureTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugMarkerTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugMarkerTest.cpp
index 009d3c0..263c607 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugMarkerTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugMarkerTest.cpp
@@ -63,11 +63,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(DebugMarkerTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(DebugMarkerTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugTest.cpp
index 39d295b..df17cf9 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugTest.cpp
@@ -403,12 +403,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(DebugTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(DebugTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilFormatsTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilFormatsTest.cpp
index e8bb3e1..c5c1207 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilFormatsTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilFormatsTest.cpp
@@ -737,13 +737,8 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(DepthStencilFormatsTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(DepthStencilFormatsTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES2(DepthStencilFormatsTest);
+ANGLE_INSTANTIATE_TEST_ES3(DepthStencilFormatsTestES3);
class TinyDepthStencilWorkaroundTest : public ANGLETest
{
@@ -769,6 +764,9 @@
// http://anglebug.com/1664
TEST_P(TinyDepthStencilWorkaroundTest, DepthTexturesStick)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsOpenGLES()) || (IsLinux() && IsVulkan()));
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kDrawVS[] =
"#version 100\n"
"attribute vec3 vertex;\n"
@@ -873,4 +871,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(TinyDepthStencilWorkaroundTest, ES3_D3D11());
+ANGLE_INSTANTIATE_TEST_ES3(TinyDepthStencilWorkaroundTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilTest.cpp
index 96bcc58..49451d3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilTest.cpp
@@ -244,19 +244,13 @@
// Tests that clearing or rendering into a stencil-only format doesn't affect depth.
TEST_P(DepthStencilTest, StencilOnlyEmulatedWithPacked)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsWindows() && IsD3D9());
bindColorStencilFBO();
prepareSingleEmulatedWithPacked();
ensureDepthUnaffected();
}
-ANGLE_INSTANTIATE_TEST(DepthStencilTest,
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(DepthStencilTest);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DifferentStencilMasksTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DifferentStencilMasksTest.cpp
index 57de47c..b07a5f5 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DifferentStencilMasksTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DifferentStencilMasksTest.cpp
@@ -67,6 +67,9 @@
// Tests that effectively different front and back masks are illegal.
TEST_P(DifferentStencilMasksTest, DrawWithDifferentMask)
{
+ // TODO(hqle): Make this test work for Metal. http://anglebug.com/4134
+ ANGLE_SKIP_TEST_IF(IsMetal());
+
glStencilMaskSeparate(GL_FRONT, 0x0001);
glStencilMaskSeparate(GL_BACK, 0x0002);
@@ -100,11 +103,5 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(DifferentStencilMasksTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(DifferentStencilMasksTest);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DiscardFramebufferEXTTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DiscardFramebufferEXTTest.cpp
index 78b6eba..497fc8b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DiscardFramebufferEXTTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DiscardFramebufferEXTTest.cpp
@@ -26,7 +26,10 @@
TEST_P(DiscardFramebufferEXTTest, DefaultFramebuffer)
{
- ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("EXT_discard_framebuffer"));
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_discard_framebuffer"));
+
+ // TODO: fix crash issue. http://anglebug.com/4141
+ ANGLE_SKIP_TEST_IF(IsD3D11());
// These should succeed on the default framebuffer
const GLenum discards1[] = {GL_COLOR_EXT};
@@ -61,7 +64,7 @@
TEST_P(DiscardFramebufferEXTTest, NonDefaultFramebuffer)
{
- ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("EXT_discard_framebuffer"));
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_discard_framebuffer"));
GLuint tex2D;
GLuint framebuffer;
@@ -112,11 +115,4 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(DiscardFramebufferEXTTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(DiscardFramebufferEXTTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp
index f39de9f..abf6e3b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp
@@ -318,9 +318,9 @@
{
baseInstances[i] = i * 2;
}
- glMultiDrawArraysInstancedBaseInstanceANGLE(GL_TRIANGLES, drawCount, counts.data(),
- instanceCounts.data(), firsts.data(),
- baseInstances.data());
+ glMultiDrawArraysInstancedBaseInstanceANGLE(GL_TRIANGLES, firsts.data(), counts.data(),
+ instanceCounts.data(), baseInstances.data(),
+ drawCount);
}
void doDrawElementsInstancedBaseVertexBaseInstance()
@@ -378,8 +378,8 @@
}
glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(
- GL_TRIANGLES, GL_UNSIGNED_SHORT, drawCount, counts.data(), instanceCounts.data(),
- indices.data(), baseVertices.data(), baseInstances.data());
+ GL_TRIANGLES, counts.data(), GL_UNSIGNED_SHORT, indices.data(), instanceCounts.data(),
+ baseVertices.data(), baseInstances.data(), drawCount);
}
void checkDrawResult(bool hasBaseVertex, bool oneColumn = false)
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBuffersTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBuffersTest.cpp
index 5011602..ac9e419 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBuffersTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBuffersTest.cpp
@@ -641,16 +641,8 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(DrawBuffersTest,
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(DrawBuffersTest);
-ANGLE_INSTANTIATE_TEST(DrawBuffersWebGL2Test, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(DrawBuffersWebGL2Test);
-ANGLE_INSTANTIATE_TEST(DrawBuffersTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(DrawBuffersTestES3);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawElementsTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawElementsTest.cpp
index 9705813..f642c3f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawElementsTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawElementsTest.cpp
@@ -111,6 +111,8 @@
// deleting the applied index buffer.
TEST_P(DrawElementsTest, DeletingAfterStreamingIndexes)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsWindows() && IsD3D11());
// Init program
constexpr char kVS[] =
"attribute vec2 position;\n"
@@ -311,6 +313,6 @@
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
}
-ANGLE_INSTANTIATE_TEST(DrawElementsTest, ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(WebGLDrawElementsTest, ES2_OPENGL(), ES2_OPENGLES(), ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(DrawElementsTest);
+ANGLE_INSTANTIATE_TEST_ES2(WebGLDrawElementsTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ETCTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ETCTextureTest.cpp
index 0596ebb..39a3faf 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ETCTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ETCTextureTest.cpp
@@ -253,11 +253,5 @@
}
}
-ANGLE_INSTANTIATE_TEST(ETCTextureTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(ETCTextureTest);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ExplicitContextTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ExplicitContextTest.cpp
index f1cb10d..5e02d6e 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ExplicitContextTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ExplicitContextTest.cpp
@@ -87,11 +87,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(ExplicitContextTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(ExplicitContextTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FenceSyncTests.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FenceSyncTests.cpp
index b201ddc..e45afb3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FenceSyncTests.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FenceSyncTests.cpp
@@ -261,13 +261,5 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(FenceNVTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(FenceSyncTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(FenceNVTest);
+ANGLE_INSTANTIATE_TEST_ES3(FenceSyncTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferMixedSamplesTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferMixedSamplesTest.cpp
index 40727a7..b4609fd 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferMixedSamplesTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferMixedSamplesTest.cpp
@@ -266,8 +266,4 @@
EXPECT_EQ(0, memcmp(results[0].get(), results[2].get(), kResultSize));
}
-ANGLE_INSTANTIATE_TEST(CHROMIUMFramebufferMixedSamplesTest,
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGL(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(CHROMIUMFramebufferMixedSamplesTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferRenderMipmapTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferRenderMipmapTest.cpp
index b6aa154..6f442fc 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferRenderMipmapTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferRenderMipmapTest.cpp
@@ -53,6 +53,8 @@
// when using a non-zero level in glFramebufferTexture2D.
TEST_P(FramebufferRenderMipmapTest, Validation)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
bool renderToMipmapSupported =
IsGLExtensionEnabled("GL_OES_fbo_render_mipmap") || getClientMajorVersion() > 2;
@@ -155,12 +157,4 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(FramebufferRenderMipmapTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(FramebufferRenderMipmapTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp
index ad483fd..9ba0571 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp
@@ -364,16 +364,7 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(FramebufferFormatsTest,
- ES2_VULKAN(),
- ES3_VULKAN(),
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(FramebufferFormatsTest);
class FramebufferTest_ES3 : public ANGLETest
{};
@@ -827,11 +818,7 @@
EXPECT_PIXEL_COLOR_EQ(getWindowWidth() - 1, getWindowHeight() - 1, GLColor::green);
}
-ANGLE_INSTANTIATE_TEST(FramebufferTest_ES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(FramebufferTest_ES3);
class FramebufferTest_ES31 : public ANGLETest
{
@@ -1003,6 +990,8 @@
ANGLE_SKIP_TEST_IF(IsLinux() && IsAMD() && IsDesktopOpenGL());
// Occlusion query reports fragments outside the render area are still rendered
ANGLE_SKIP_TEST_IF(IsAndroid() || (IsWindows() && (IsIntel() || IsAMD())));
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kVS1[] = R"(#version 310 es
in layout(location = 0) highp vec2 a_position;
@@ -1112,11 +1101,7 @@
ASSERT_GL_NO_ERROR();
}
-ANGLE_INSTANTIATE_TEST(FramebufferTest_ES31,
- ES31_D3D11(),
- ES31_OPENGL(),
- ES31_OPENGLES(),
- ES31_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES31(FramebufferTest_ES31);
class AddDummyTextureNoRenderTargetTest : public ANGLETest
{
@@ -1152,4 +1137,4 @@
ASSERT_GL_NO_ERROR();
}
-ANGLE_INSTANTIATE_TEST(AddDummyTextureNoRenderTargetTest, ES2_D3D11());
+ANGLE_INSTANTIATE_TEST_ES2(AddDummyTextureNoRenderTargetTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp
index e9bef54..27be509 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp
@@ -703,6 +703,8 @@
// Draw an array of points with the first vertex offset at 0 using gl_VertexID
TEST_P(GLSLTest_ES3, GLVertexIDOffsetZeroDrawArray)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr int kStartIndex = 0;
constexpr int kArrayLength = 5;
constexpr char kVS[] = R"(#version 300 es
@@ -765,6 +767,8 @@
// https://github.com/KhronosGroup/WebGL/blob/master/sdk/tests/conformance2/rendering/vertex-id.html
TEST_P(GLSLTest_ES3, GLVertexIDIntegerTextureDrawArrays)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// Have to set a large point size because the window size is much larger than the texture
constexpr char kVS[] = R"(#version 300 es
flat out highp int vVertexID;
@@ -820,6 +824,8 @@
// Draw an array of points with the first vertex offset at 5 using gl_VertexID
TEST_P(GLSLTest_ES3, GLVertexIDOffsetFiveDrawArray)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// Bug in Nexus drivers, offset does not work. (anglebug.com/3264)
ANGLE_SKIP_TEST_IF((IsNexus5X() || IsNexus6P()) && IsOpenGLES());
@@ -6130,6 +6136,8 @@
// AMD's OpenGL drivers may have the same issue. http://anglebug.com/1643
ANGLE_SKIP_TEST_IF(IsAMD() && IsWindows() && IsOpenGL());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kPointCoordVS[] = R"(attribute vec2 position;
uniform vec2 viewportSize;
@@ -6153,6 +6161,7 @@
static_cast<GLfloat>(getWindowHeight()));
// Draw to backbuffer.
+ glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(GL_POINTS, 0, 1);
ASSERT_GL_NO_ERROR();
@@ -6172,6 +6181,7 @@
ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
// Draw to user FBO.
+ glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(GL_POINTS, 0, 1);
ASSERT_GL_NO_ERROR();
@@ -7266,6 +7276,30 @@
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
}
+// Test that dynamic indexing of swizzled l-values should work.
+// A simple porting of sdk/tests/conformance2/glsl3/vector-dynamic-indexing-swizzled-lvalue.html
+TEST_P(GLSLTest_ES3, DynamicIndexingOfSwizzledLValuesShouldWork)
+{
+ // The shader first assigns v.x to v.z (1.0)
+ // Then v.y to v.y (2.0)
+ // Then v.z to v.x (1.0)
+ constexpr char kFS[] = R"(#version 300 es
+precision highp float;
+out vec4 my_FragColor;
+void main() {
+ vec3 v = vec3(1.0, 2.0, 3.0);
+ for (int i = 0; i < 3; i++) {
+ v.zyx[i] = v[i];
+ }
+ my_FragColor = distance(v, vec3(1.0, 2.0, 1.0)) < 0.01 ? vec4(0, 1, 0, 1) : vec4(1, 0, 0, 1);
+})";
+
+ ANGLE_GL_PROGRAM(program, essl3_shaders::vs::Simple(), kFS);
+ EXPECT_GL_NO_ERROR();
+ drawQuad(program, essl3_shaders::PositionAttrib(), 0.5f);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+}
+
// Test that multiple nested assignments are handled correctly.
TEST_P(GLSLTest_ES31, MixedRowAndColumnMajorMatrices_WriteSideEffect)
{
@@ -7415,28 +7449,14 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(GLSLTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(GLSLTest);
-ANGLE_INSTANTIATE_TEST(GLSLTestNoValidation,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(GLSLTestNoValidation);
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(GLSLTest_ES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(GLSLTest_ES3);
-ANGLE_INSTANTIATE_TEST(WebGLGLSLTest, ES2_D3D11(), ES2_OPENGL(), ES2_OPENGLES(), ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(WebGLGLSLTest);
-ANGLE_INSTANTIATE_TEST(GLSLTest_ES31, ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES(), ES31_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES31(GLSLTest_ES31);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/GeometryShaderTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/GeometryShaderTest.cpp
index 6d31309..a753672 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/GeometryShaderTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/GeometryShaderTest.cpp
@@ -819,6 +819,6 @@
EXPECT_GLENUM_EQ(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT, status);
}
-ANGLE_INSTANTIATE_TEST(GeometryShaderTestES3, ES3_OPENGL(), ES3_OPENGLES(), ES3_D3D11());
-ANGLE_INSTANTIATE_TEST(GeometryShaderTest, ES31_OPENGL(), ES31_OPENGLES(), ES31_D3D11());
+ANGLE_INSTANTIATE_TEST_ES3(GeometryShaderTestES3);
+ANGLE_INSTANTIATE_TEST_ES31(GeometryShaderTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/GetImageTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/GetImageTest.cpp
new file mode 100644
index 0000000..e919482
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/GetImageTest.cpp
@@ -0,0 +1,297 @@
+//
+// Copyright 2019 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.
+//
+// GetImageTest:
+// Tests for the ANGLE_get_image extension.
+//
+
+#include "test_utils/ANGLETest.h"
+#include "test_utils/gl_raii.h"
+
+using namespace angle;
+
+namespace
+{
+constexpr uint32_t kSize = 32;
+constexpr char kExtensionName[] = "GL_ANGLE_get_image";
+constexpr uint32_t kSmallSize = 2;
+
+class GetImageTest : public ANGLETest
+{
+ public:
+ GetImageTest()
+ {
+ setWindowWidth(kSize);
+ setWindowHeight(kSize);
+ setConfigRedBits(8);
+ setConfigGreenBits(8);
+ setConfigBlueBits(8);
+ setConfigAlphaBits(8);
+ }
+};
+
+class GetImageTestNoExtensions : public ANGLETest
+{
+ public:
+ GetImageTestNoExtensions() { setExtensionsEnabled(false); }
+};
+
+GLTexture InitTextureWithSize(uint32_t size, void *pixelData)
+{
+ // Create a simple texture.
+ GLTexture tex;
+ glBindTexture(GL_TEXTURE_2D, tex);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixelData);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ return tex;
+}
+
+GLTexture InitSimpleTexture()
+{
+ std::vector<GLColor> pixelData(kSize * kSize, GLColor::red);
+ return InitTextureWithSize(kSize, pixelData.data());
+}
+
+GLRenderbuffer InitRenderbufferWithSize(uint32_t size)
+{
+ // Create a simple renderbuffer.
+ GLRenderbuffer renderbuf;
+ glBindRenderbuffer(GL_RENDERBUFFER, renderbuf);
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA4, size, size);
+ return renderbuf;
+}
+
+GLRenderbuffer InitSimpleRenderbuffer()
+{
+ return InitRenderbufferWithSize(kSize);
+}
+
+// Test validation for the extension functions.
+TEST_P(GetImageTest, NegativeAPI)
+{
+ // Verify the extension is enabled.
+ ASSERT_TRUE(IsGLExtensionEnabled(kExtensionName));
+
+ // Draw once with simple texture.
+ GLTexture tex = InitSimpleTexture();
+ ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Texture2D(), essl1_shaders::fs::Texture2D());
+ drawQuad(program, essl1_shaders::PositionAttrib(), 0.5, 1.0f, true);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
+ ASSERT_GL_NO_ERROR();
+
+ // Pack pixels tightly.
+ glPixelStorei(GL_PACK_ALIGNMENT, 1);
+
+ // Verify GetTexImage can work with correct parameters.
+ std::vector<GLColor> buffer(kSize * kSize);
+ glGetTexImageANGLE(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_NO_ERROR();
+
+ // Test invalid texture target.
+ glGetTexImageANGLE(GL_TEXTURE_CUBE_MAP, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Test invalid texture level.
+ glGetTexImageANGLE(GL_TEXTURE_2D, -1, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_VALUE);
+ glGetTexImageANGLE(GL_TEXTURE_2D, 2000, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_VALUE);
+
+ // Test invalid format and type.
+ glGetTexImageANGLE(GL_TEXTURE_2D, 0, GL_NONE, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+ glGetTexImageANGLE(GL_TEXTURE_2D, 0, GL_RGBA, GL_NONE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Create a simple renderbuffer.
+ GLRenderbuffer renderbuf = InitSimpleRenderbuffer();
+ ASSERT_GL_NO_ERROR();
+
+ // Verify GetRenderbufferImage can work with correct parameters.
+ glGetRenderbufferImageANGLE(GL_RENDERBUFFER, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_NO_ERROR();
+
+ // Test invalid renderbuffer target.
+ glGetRenderbufferImageANGLE(GL_TEXTURE_2D, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Test invalid renderbuffer format/type.
+ glGetRenderbufferImageANGLE(GL_RENDERBUFFER, GL_NONE, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+ glGetRenderbufferImageANGLE(GL_RENDERBUFFER, GL_RGBA, GL_NONE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Pack buffer tests. Requires ES 3+ or extension.
+ if (getClientMajorVersion() >= 3 || IsGLExtensionEnabled("GL_NV_pixel_buffer_object"))
+ {
+ // Test valid pack buffer.
+ GLBuffer packBuffer;
+ glBindBuffer(GL_PIXEL_PACK_BUFFER, packBuffer);
+ glBufferData(GL_PIXEL_PACK_BUFFER, kSize * kSize * sizeof(GLColor), nullptr,
+ GL_STATIC_DRAW);
+ glGetTexImageANGLE(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_OPERATION);
+ glGetRenderbufferImageANGLE(GL_RENDERBUFFER, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_OPERATION);
+
+ // Test too small pack buffer.
+ glBufferData(GL_PIXEL_PACK_BUFFER, kSize, nullptr, GL_STATIC_DRAW);
+ glGetTexImageANGLE(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_OPERATION);
+ glGetRenderbufferImageANGLE(GL_RENDERBUFFER, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_OPERATION);
+ }
+}
+
+// Simple test for GetTexImage
+TEST_P(GetImageTest, GetTexImage)
+{
+ // Verify the extension is enabled.
+ ASSERT_TRUE(IsGLExtensionEnabled(kExtensionName));
+
+ constexpr uint32_t kSmallSize = 2;
+ std::vector<GLColor> expectedData = {GLColor::red, GLColor::blue, GLColor::green,
+ GLColor::yellow};
+
+ glViewport(0, 0, kSmallSize, kSmallSize);
+
+ // Draw once with simple texture.
+ GLTexture tex = InitTextureWithSize(kSmallSize, expectedData.data());
+ ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Texture2D(), essl1_shaders::fs::Texture2D());
+ drawQuad(program, essl1_shaders::PositionAttrib(), 0.5, 1.0f, true);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
+ ASSERT_GL_NO_ERROR();
+
+ // Pack pixels tightly.
+ glPixelStorei(GL_PACK_ALIGNMENT, 1);
+
+ // Verify GetImage.
+ std::vector<GLColor> actualData(kSmallSize * kSmallSize);
+ glGetTexImageANGLE(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, actualData.data());
+ EXPECT_GL_NO_ERROR();
+ EXPECT_EQ(expectedData, actualData);
+}
+
+// Simple cube map test for GetTexImage
+TEST_P(GetImageTest, CubeMap)
+{
+ // Verify the extension is enabled.
+ ASSERT_TRUE(IsGLExtensionEnabled(kExtensionName));
+
+ const std::array<std::array<GLColor, kSmallSize * kSmallSize>, kCubeFaces.size()> expectedData =
+ {{
+ {GLColor::red, GLColor::red, GLColor::red, GLColor::red},
+ {GLColor::green, GLColor::green, GLColor::green, GLColor::green},
+ {GLColor::blue, GLColor::blue, GLColor::blue, GLColor::blue},
+ {GLColor::yellow, GLColor::yellow, GLColor::yellow, GLColor::yellow},
+ {GLColor::cyan, GLColor::cyan, GLColor::cyan, GLColor::cyan},
+ {GLColor::magenta, GLColor::magenta, GLColor::magenta, GLColor::magenta},
+ }};
+
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
+
+ for (size_t faceIndex = 0; faceIndex < kCubeFaces.size(); ++faceIndex)
+ {
+ glTexImage2D(kCubeFaces[faceIndex], 0, GL_RGBA, kSmallSize, kSmallSize, 0, GL_RGBA,
+ GL_UNSIGNED_BYTE, expectedData[faceIndex].data());
+ }
+ glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+ // Pack pixels tightly.
+ glPixelStorei(GL_PACK_ALIGNMENT, 1);
+
+ // Verify GetImage.
+ std::array<GLColor, kSmallSize *kSmallSize> actualData = {};
+ for (size_t faceIndex = 0; faceIndex < kCubeFaces.size(); ++faceIndex)
+ {
+ glGetTexImageANGLE(kCubeFaces[faceIndex], 0, GL_RGBA, GL_UNSIGNED_BYTE, actualData.data());
+ EXPECT_GL_NO_ERROR();
+ EXPECT_EQ(expectedData[faceIndex], actualData);
+ }
+}
+
+// Simple test for GetRenderbufferImage
+TEST_P(GetImageTest, GetRenderbufferImage)
+{
+ // Verify the extension is enabled.
+ ASSERT_TRUE(IsGLExtensionEnabled(kExtensionName));
+
+ std::vector<GLColor> expectedData = {GLColor::red, GLColor::blue, GLColor::green,
+ GLColor::yellow};
+
+ glViewport(0, 0, kSmallSize, kSmallSize);
+
+ // Set up a simple Framebuffer with a Renderbuffer.
+ GLRenderbuffer renderbuffer = InitRenderbufferWithSize(kSmallSize);
+ GLFramebuffer framebuffer;
+ glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderbuffer);
+ ASSERT_GL_FRAMEBUFFER_COMPLETE(GL_FRAMEBUFFER);
+
+ // Draw once with simple texture.
+ GLTexture tex = InitTextureWithSize(kSmallSize, expectedData.data());
+ ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Texture2D(), essl1_shaders::fs::Texture2D());
+ drawQuad(program, essl1_shaders::PositionAttrib(), 0.5, 1.0f, true);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
+ ASSERT_GL_NO_ERROR();
+
+ // Pack pixels tightly.
+ glPixelStorei(GL_PACK_ALIGNMENT, 1);
+
+ // Verify GetImage.
+ std::vector<GLColor> actualData(kSmallSize * kSmallSize);
+ glGetRenderbufferImageANGLE(GL_RENDERBUFFER, GL_RGBA, GL_UNSIGNED_BYTE, actualData.data());
+ EXPECT_GL_NO_ERROR();
+ EXPECT_EQ(expectedData, actualData);
+}
+
+// Verifies that the extension enums and entry points are invalid when the extension is disabled.
+TEST_P(GetImageTestNoExtensions, EntryPointsInactive)
+{
+ // Verify the extension is not enabled.
+ ASSERT_FALSE(IsGLExtensionEnabled(kExtensionName));
+
+ // Draw once with simple texture.
+ GLTexture tex = InitSimpleTexture();
+ ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Texture2D(), essl1_shaders::fs::Texture2D());
+ drawQuad(program, essl1_shaders::PositionAttrib(), 0.5, 1.0f, true);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
+ ASSERT_GL_NO_ERROR();
+
+ // Query implementation format and type. Should give invalid enum.
+ GLint param;
+ glGetTexParameteriv(GL_TEXTURE_2D, GL_IMPLEMENTATION_COLOR_READ_FORMAT, ¶m);
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+
+ glGetTexParameteriv(GL_TEXTURE_2D, GL_IMPLEMENTATION_COLOR_READ_TYPE, ¶m);
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Verify calling GetTexImage produces an error.
+ std::vector<GLColor> buffer(kSize * kSize, 0);
+ glGetTexImageANGLE(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_OPERATION);
+
+ // Create a simple renderbuffer.
+ GLRenderbuffer renderbuf = InitSimpleRenderbuffer();
+ ASSERT_GL_NO_ERROR();
+
+ // Query implementation format and type. Should give invalid enum.
+ glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_IMPLEMENTATION_COLOR_READ_FORMAT, ¶m);
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+
+ glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_IMPLEMENTATION_COLOR_READ_TYPE, ¶m);
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Verify calling GetRenderbufferImage produces an error.
+ glGetRenderbufferImageANGLE(GL_RENDERBUFFER, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+ EXPECT_GL_ERROR(GL_INVALID_OPERATION);
+}
+
+ANGLE_INSTANTIATE_TEST(GetImageTest, ES2_VULKAN(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(GetImageTestNoExtensions, ES2_VULKAN(), ES3_VULKAN());
+} // namespace
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ImageTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ImageTest.cpp
index 5b7536d..a30c4db 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ImageTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ImageTest.cpp
@@ -510,8 +510,14 @@
EXPECT_TRUE(has2DTextureExt());
EXPECT_TRUE(hasCubemapExt());
EXPECT_TRUE(hasRenderbufferExt());
- // TODO(geofflang): Support GL_OES_EGL_image_external_essl3. http://anglebug.com/2668
- EXPECT_FALSE(hasExternalESSL3Ext());
+ if (getClientMajorVersion() >= 3)
+ {
+ EXPECT_TRUE(hasExternalESSL3Ext());
+ }
+ else
+ {
+ EXPECT_FALSE(hasExternalESSL3Ext());
+ }
}
else
{
@@ -1960,15 +1966,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(ImageTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(ImageTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(ImageTest);
+ANGLE_INSTANTIATE_TEST_ES3(ImageTestES3);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/IncompleteTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/IncompleteTextureTest.cpp
index 73ed876..07c7ee1 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/IncompleteTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/IncompleteTextureTest.cpp
@@ -171,6 +171,8 @@
// Tests that incomplete textures don't get initialized with the unpack buffer contents.
TEST_P(IncompleteTextureTestES3, UnpackBufferBound)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
std::vector<GLColor> red(16, GLColor::red);
GLBuffer unpackBuffer;
@@ -186,6 +188,8 @@
// Tests that the incomplete multisample texture has the correct alpha value.
TEST_P(IncompleteTextureTestES31, MultisampleTexture)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
constexpr char kVS[] = R"(#version 310 es
in vec2 position;
out vec2 texCoord;
@@ -221,11 +225,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(IncompleteTextureTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(IncompleteTextureTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(IncompleteTextureTestES31, ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES2(IncompleteTextureTest);
+ANGLE_INSTANTIATE_TEST_ES3(IncompleteTextureTestES3);
+ANGLE_INSTANTIATE_TEST_ES31(IncompleteTextureTestES31);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexedPointsTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexedPointsTest.cpp
index d0902ca..d47ca0b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexedPointsTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexedPointsTest.cpp
@@ -192,26 +192,36 @@
TEST_P(IndexedPointsTestUByte, UnsignedByteOffset0)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(0);
}
TEST_P(IndexedPointsTestUByte, UnsignedByteOffset1)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(1);
}
TEST_P(IndexedPointsTestUByte, UnsignedByteOffset2)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(2);
}
TEST_P(IndexedPointsTestUByte, UnsignedByteOffset3)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(3);
}
TEST_P(IndexedPointsTestUByte, VertexWithColorUnsignedByteOffset0)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(fjhenigman): Fix with buffer offset http://anglebug.com/2848
ANGLE_SKIP_TEST_IF(IsVulkan() && IsAMD());
@@ -220,6 +230,8 @@
TEST_P(IndexedPointsTestUByte, VertexWithColorUnsignedByteOffset1)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(fjhenigman): Fix with buffer offset http://anglebug.com/2848
ANGLE_SKIP_TEST_IF(IsVulkan() && IsAMD());
@@ -228,6 +240,8 @@
TEST_P(IndexedPointsTestUByte, VertexWithColorUnsignedByteOffset2)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(fjhenigman): Fix with buffer offset http://anglebug.com/2848
ANGLE_SKIP_TEST_IF(IsVulkan() && IsAMD());
@@ -236,6 +250,8 @@
TEST_P(IndexedPointsTestUByte, VertexWithColorUnsignedByteOffset3)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(fjhenigman): Fix with buffer offset http://anglebug.com/2848
ANGLE_SKIP_TEST_IF(IsVulkan() && IsAMD());
@@ -246,26 +262,36 @@
TEST_P(IndexedPointsTestUShort, UnsignedShortOffset0)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(0);
}
TEST_P(IndexedPointsTestUShort, UnsignedShortOffset1)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(1);
}
TEST_P(IndexedPointsTestUShort, UnsignedShortOffset2)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(2);
}
TEST_P(IndexedPointsTestUShort, UnsignedShortOffset3)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(3);
}
TEST_P(IndexedPointsTestUShort, VertexWithColorUnsignedShortOffset0)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(fjhenigman): Fix with buffer offset http://anglebug.com/2848
ANGLE_SKIP_TEST_IF(IsVulkan() && IsAMD());
@@ -274,6 +300,8 @@
TEST_P(IndexedPointsTestUShort, VertexWithColorUnsignedShortOffset1)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(fjhenigman): Fix with buffer offset http://anglebug.com/2848
ANGLE_SKIP_TEST_IF(IsVulkan() && IsAMD());
@@ -282,6 +310,8 @@
TEST_P(IndexedPointsTestUShort, VertexWithColorUnsignedShortOffset2)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(fjhenigman): Fix with buffer offset http://anglebug.com/2848
ANGLE_SKIP_TEST_IF(IsVulkan() && IsAMD());
@@ -290,6 +320,8 @@
TEST_P(IndexedPointsTestUShort, VertexWithColorUnsignedShortOffset3)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(fjhenigman): Fix with buffer offset http://anglebug.com/2848
ANGLE_SKIP_TEST_IF(IsVulkan() && IsAMD());
@@ -298,6 +330,8 @@
TEST_P(IndexedPointsTestUShort, VertexWithColorUnsignedShortOffsetChangingIndices)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
// TODO(fjhenigman): Fix with buffer offset http://anglebug.com/2848
ANGLE_SKIP_TEST_IF(IsVulkan() && IsAMD());
@@ -318,7 +352,8 @@
{
return;
}
-
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(0);
}
@@ -328,7 +363,8 @@
{
return;
}
-
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(1);
}
@@ -338,7 +374,8 @@
{
return;
}
-
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(2);
}
@@ -348,7 +385,8 @@
{
return;
}
-
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(3);
}
@@ -358,7 +396,8 @@
{
return;
}
-
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(0, false);
}
@@ -368,7 +407,8 @@
{
return;
}
-
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(1, false);
}
@@ -378,7 +418,8 @@
{
return;
}
-
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(2, false);
}
@@ -388,7 +429,8 @@
{
return;
}
-
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
runTest(3, false);
}
@@ -396,18 +438,6 @@
// http://anglebug.com/2646
// TODO(geofflang): Figure out why this test fails on Intel OpenGL
-ANGLE_INSTANTIATE_TEST(IndexedPointsTestUByte,
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(IndexedPointsTestUShort,
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(IndexedPointsTestUInt,
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
\ No newline at end of file
+ANGLE_INSTANTIATE_TEST_ES2(IndexedPointsTestUByte);
+ANGLE_INSTANTIATE_TEST_ES2(IndexedPointsTestUShort);
+ANGLE_INSTANTIATE_TEST_ES2(IndexedPointsTestUInt);
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp
index 8b2d439..872a6b9 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp
@@ -480,6 +480,8 @@
// Verify that a large divisor that also changes doesn't cause issues and renders correctly.
TEST_P(InstancingTestES3, LargeDivisor)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kVS[] = R"(#version 300 es
layout(location = 0) in vec4 a_position;
layout(location = 1) in vec4 a_color;
@@ -579,6 +581,8 @@
// incorrectly clamped down to the maximum signed integer.
TEST_P(InstancingTestES3, LargestDivisor)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr GLuint kLargeDivisor = std::numeric_limits<GLuint>::max();
glVertexAttribDivisor(0, kLargeDivisor);
@@ -588,13 +592,8 @@
<< "Vertex attrib divisor read was not the same that was passed in.";
}
-ANGLE_INSTANTIATE_TEST(InstancingTestES3, ES3_OPENGL(), ES3_OPENGLES(), ES3_D3D11(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(InstancingTestES3);
-ANGLE_INSTANTIATE_TEST(InstancingTestES31, ES31_OPENGL(), ES31_OPENGLES(), ES31_D3D11());
+ANGLE_INSTANTIATE_TEST_ES31(InstancingTestES31);
-ANGLE_INSTANTIATE_TEST(InstancingTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(InstancingTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/LineLoopTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/LineLoopTest.cpp
index 93ca867..e7139ce 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/LineLoopTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/LineLoopTest.cpp
@@ -310,11 +310,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(LineLoopTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(LineLoopTest);
-ANGLE_INSTANTIATE_TEST(LineLoopIndirectTest, ES31_OPENGLES(), ES31_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES31(LineLoopIndirectTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/LinkAndRelinkTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/LinkAndRelinkTest.cpp
index a44b55b..d459ea2 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/LinkAndRelinkTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/LinkAndRelinkTest.cpp
@@ -444,15 +444,7 @@
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
}
-ANGLE_INSTANTIATE_TEST(LinkAndRelinkTest,
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_D3D11(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(LinkAndRelinkTestES31, ES31_OPENGL(), ES31_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(LinkAndRelinkTest);
+ANGLE_INSTANTIATE_TEST_ES31(LinkAndRelinkTestES31);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MemoryObjectTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MemoryObjectTest.cpp
index c137c17..2eec218 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MemoryObjectTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MemoryObjectTest.cpp
@@ -66,14 +66,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(MemoryObjectTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(MemoryObjectTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MemorySizeTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MemorySizeTest.cpp
index 0168965..aec41a8 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MemorySizeTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MemorySizeTest.cpp
@@ -131,13 +131,5 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(MemorySizeTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(MemorySizeTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
index 79638cb..327443f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
@@ -1246,14 +1246,5 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(MipmapTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_D3D11_PRESENT_PATH_FAST(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(MipmapTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(MipmapTest);
+ANGLE_INSTANTIATE_TEST_ES3(MipmapTestES3);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampleCompatibilityTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampleCompatibilityTest.cpp
index d702984..ac088ff 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampleCompatibilityTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampleCompatibilityTest.cpp
@@ -274,11 +274,7 @@
EXPECT_EQ(0, memcmp(results[0].get(), results[2].get(), kResultSize));
}
-ANGLE_INSTANTIATE_TEST(EXTMultisampleCompatibilityTest,
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGL(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(EXTMultisampleCompatibilityTest);
class MultisampleCompatibilityTest : public ANGLETest
{
@@ -401,12 +397,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(MultisampleCompatibilityTest,
- ES2_D3D9(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(MultisampleCompatibilityTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampledRenderToTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampledRenderToTextureTest.cpp
new file mode 100644
index 0000000..cb90c5b
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampledRenderToTextureTest.cpp
@@ -0,0 +1,738 @@
+//
+// Copyright 2019 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.
+//
+
+// MultisampledRenderToTextureTest: Tests of EXT_multisampled_render_to_texture extension
+
+#include "test_utils/ANGLETest.h"
+#include "test_utils/gl_raii.h"
+
+using namespace angle;
+
+namespace
+{
+constexpr char kBasicVertexShader[] =
+ R"(attribute vec3 position;
+void main()
+{
+ gl_Position = vec4(position, 1);
+})";
+
+constexpr char kGreenFragmentShader[] =
+ R"(void main()
+{
+ gl_FragColor = vec4(0, 1, 0, 1);
+})";
+
+constexpr char kRedFragmentShader[] =
+ R"(void main()
+{
+ gl_FragColor = vec4(1, 0, 0, 1);
+})";
+
+constexpr char kVS[] =
+ "precision highp float;\n"
+ "attribute vec4 position;\n"
+ "varying vec2 texcoord;\n"
+ "\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = position;\n"
+ " texcoord = (position.xy * 0.5) + 0.5;\n"
+ "}\n";
+
+constexpr char kFS[] =
+ "precision highp float;\n"
+ "uniform sampler2D tex;\n"
+ "varying vec2 texcoord;\n"
+ "\n"
+ "void main()\n"
+ "{\n"
+ " gl_FragColor = texture2D(tex, texcoord);\n"
+ "}\n";
+
+class MultisampledRenderToTextureTest : public ANGLETest
+{
+ protected:
+ MultisampledRenderToTextureTest()
+ {
+ setWindowWidth(64);
+ setWindowHeight(64);
+ setConfigRedBits(8);
+ setConfigGreenBits(8);
+ setConfigBlueBits(8);
+ setConfigAlphaBits(8);
+ }
+
+ void testSetUp() override {}
+
+ void testTearDown() override {}
+
+ void setupCopyTexProgram()
+ {
+ mCopyTextureProgram.makeRaster(kVS, kFS);
+ ASSERT_GL_TRUE(mCopyTextureProgram.valid());
+
+ mCopyTextureUniformLocation = glGetUniformLocation(mCopyTextureProgram, "tex");
+
+ ASSERT_GL_NO_ERROR();
+ }
+
+ void verifyResults(GLuint texture,
+ GLubyte data[4],
+ GLint fboSize,
+ GLint xs,
+ GLint ys,
+ GLint xe,
+ GLint ye)
+ {
+ glViewport(0, 0, fboSize, fboSize);
+
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
+
+ // Draw a quad with the target texture
+ glUseProgram(mCopyTextureProgram);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glUniform1i(mCopyTextureUniformLocation, 0);
+
+ drawQuad(mCopyTextureProgram, "position", 0.5f);
+
+ // Expect that the rendered quad has the same color as the source texture
+ EXPECT_PIXEL_NEAR(xs, ys, data[0], data[1], data[2], data[3], 1.0);
+ EXPECT_PIXEL_NEAR(xs, ye - 1, data[0], data[1], data[2], data[3], 1.0);
+ EXPECT_PIXEL_NEAR(xe - 1, ys, data[0], data[1], data[2], data[3], 1.0);
+ EXPECT_PIXEL_NEAR(xe - 1, ye - 1, data[0], data[1], data[2], data[3], 1.0);
+ EXPECT_PIXEL_NEAR((xs + xe) / 2, (ys + ye) / 2, data[0], data[1], data[2], data[3], 1.0);
+ }
+
+ void clearAndDrawQuad(GLuint program, GLsizei viewportWidth, GLsizei viewportHeight)
+ {
+ glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glViewport(0, 0, viewportWidth, viewportHeight);
+ ASSERT_GL_NO_ERROR();
+
+ drawQuad(program, "position", 0.0f);
+ }
+
+ GLProgram mCopyTextureProgram;
+ GLint mCopyTextureUniformLocation = -1;
+};
+
+class MultisampledRenderToTextureES3Test : public MultisampledRenderToTextureTest
+{};
+
+// Checking against invalid parameters for RenderbufferStorageMultisampleEXT.
+TEST_P(MultisampledRenderToTextureTest, RenderbufferParameterCheck)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+
+ GLRenderbuffer renderbuffer;
+ glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
+
+ // Positive test case
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 4, GL_DEPTH_COMPONENT16, 64, 64);
+ ASSERT_GL_NO_ERROR();
+
+ GLint samples;
+ glGetIntegerv(GL_MAX_SAMPLES_EXT, &samples);
+ ASSERT_GL_NO_ERROR();
+ EXPECT_GE(samples, 1);
+
+ // Samples too large
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples + 1, GL_DEPTH_COMPONENT16, 64, 64);
+ ASSERT_GL_ERROR(GL_INVALID_VALUE);
+
+ // Renderbuffer size too large
+ GLint maxSize;
+ glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &maxSize);
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 2, GL_DEPTH_COMPONENT16, maxSize + 1,
+ maxSize);
+ ASSERT_GL_ERROR(GL_INVALID_VALUE);
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 2, GL_DEPTH_COMPONENT16, maxSize,
+ maxSize + 1);
+ ASSERT_GL_ERROR(GL_INVALID_VALUE);
+
+ // Retrieving samples
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 4, GL_DEPTH_COMPONENT16, 64, 64);
+ GLint param = 0;
+ glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_SAMPLES_EXT, ¶m);
+ // GE because samples may vary base on implementation. Spec says "the resulting value for
+ // RENDERBUFFER_SAMPLES_EXT is guaranteed to be greater than or equal to samples and no more
+ // than the next larger sample count supported by the implementation"
+ EXPECT_GE(param, 4);
+}
+
+// Checking against invalid parameters for FramebufferTexture2DMultisampleEXT.
+TEST_P(MultisampledRenderToTextureTest, Texture2DParameterCheck)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64, 64, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+ ASSERT_GL_NO_ERROR();
+
+ GLFramebuffer fbo;
+ glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+ // Positive test case
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+ ASSERT_GL_NO_ERROR();
+
+ // Attachment not COLOR_ATTACHMENT0
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D,
+ texture, 0, 4);
+ ASSERT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Target not framebuffer
+ glFramebufferTexture2DMultisampleEXT(GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+ ASSERT_GL_ERROR(GL_INVALID_ENUM);
+
+ GLint samples;
+ glGetIntegerv(GL_MAX_SAMPLES_EXT, &samples);
+ ASSERT_GL_NO_ERROR();
+ EXPECT_GE(samples, 1);
+
+ // Samples too large
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, samples + 1);
+ ASSERT_GL_ERROR(GL_INVALID_VALUE);
+
+ // Retrieving samples
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+ GLint param = 0;
+ glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT, ¶m);
+ // GE because samples may vary base on implementation. Spec says "the resulting value for
+ // TEXTURE_SAMPLES_EXT is guaranteed to be greater than or equal to samples and no more than the
+ // next larger sample count supported by the implementation"
+ EXPECT_GE(param, 4);
+}
+
+// Checking against invalid parameters for FramebufferTexture2DMultisampleEXT (cubemap).
+TEST_P(MultisampledRenderToTextureTest, TextureCubeMapParameterCheck)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
+ for (GLenum face = 0; face < 6; face++)
+ {
+ glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, GL_RGBA, 64, 64, 0, GL_RGBA,
+ GL_UNSIGNED_BYTE, nullptr);
+ ASSERT_GL_NO_ERROR();
+ }
+
+ GLint samples;
+ glGetIntegerv(GL_MAX_SAMPLES_EXT, &samples);
+ ASSERT_GL_NO_ERROR();
+ EXPECT_GE(samples, 1);
+
+ GLFramebuffer FBO;
+ glBindFramebuffer(GL_FRAMEBUFFER, FBO);
+ for (GLenum face = 0; face < 6; face++)
+ {
+ // Positive test case
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, texture, 0, 4);
+ ASSERT_GL_NO_ERROR();
+
+ // Attachment not COLOR_ATTACHMENT0
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, texture, 0, 4);
+ ASSERT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Target not framebuffer
+ glFramebufferTexture2DMultisampleEXT(GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, texture, 0, 4);
+ ASSERT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Samples too large
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, texture, 0,
+ samples + 1);
+ ASSERT_GL_ERROR(GL_INVALID_VALUE);
+
+ // Retrieving samples
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, texture, 0, 4);
+ GLint param = 0;
+ glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT,
+ ¶m);
+ // GE because samples may vary base on implementation. Spec says "the resulting value for
+ // TEXTURE_SAMPLES_EXT is guaranteed to be greater than or equal to samples and no more than
+ // the next larger sample count supported by the implementation"
+ EXPECT_GE(param, 4);
+ }
+}
+
+// Checking for framebuffer completeness using extension methods.
+TEST_P(MultisampledRenderToTextureTest, FramebufferCompleteness)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+
+ // Checking that Renderbuffer and texture2d having different number of samples results
+ // in a FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64, 64, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+ ASSERT_GL_NO_ERROR();
+
+ GLFramebuffer FBO;
+ glBindFramebuffer(GL_FRAMEBUFFER, FBO);
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+ EXPECT_GL_FRAMEBUFFER_COMPLETE(GL_FRAMEBUFFER);
+
+ GLRenderbuffer renderbuffer;
+ glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 8, GL_DEPTH_COMPONENT16, 64, 64);
+ ASSERT_GL_NO_ERROR();
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, renderbuffer);
+ EXPECT_GLENUM_EQ(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE,
+ glCheckFramebufferStatus(GL_FRAMEBUFFER));
+}
+
+// Draw test with color attachment only.
+TEST_P(MultisampledRenderToTextureTest, 2DColorAttachmentMultisampleDrawTest)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+ // Set up texture and bind to FBO
+ GLsizei size = 6;
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+ ASSERT_GL_NO_ERROR();
+
+ GLFramebuffer FBO;
+ glBindFramebuffer(GL_FRAMEBUFFER, FBO);
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+ EXPECT_GL_FRAMEBUFFER_COMPLETE(GL_FRAMEBUFFER);
+
+ // Set viewport and clear to black
+ glViewport(0, 0, size, size);
+ glClearColor(0.0, 0.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ // Set up Green square program
+ ANGLE_GL_PROGRAM(program, kBasicVertexShader, kGreenFragmentShader);
+ glUseProgram(program);
+ GLint positionLocation = glGetAttribLocation(program, "position");
+ ASSERT_NE(-1, positionLocation);
+
+ setupQuadVertexBuffer(0.5f, 0.5f);
+ glVertexAttribPointer(positionLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
+ glEnableVertexAttribArray(positionLocation);
+
+ // Draw green square
+ glDrawArrays(GL_TRIANGLES, 0, 6);
+ ASSERT_GL_NO_ERROR();
+
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::black);
+ EXPECT_PIXEL_COLOR_EQ(size / 2, size / 2, GLColor::green);
+
+ // Set up Red square program
+ ANGLE_GL_PROGRAM(program2, kBasicVertexShader, kRedFragmentShader);
+ glUseProgram(program2);
+ GLint positionLocation2 = glGetAttribLocation(program2, "position");
+ ASSERT_NE(-1, positionLocation2);
+
+ setupQuadVertexBuffer(0.5f, 0.75f);
+ glVertexAttribPointer(positionLocation2, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+ // Draw red square
+ glDrawArrays(GL_TRIANGLES, 0, 6);
+ ASSERT_GL_NO_ERROR();
+
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::black);
+ EXPECT_PIXEL_COLOR_EQ(size / 2, size / 2, GLColor::red);
+
+ glDisableVertexAttribArray(0);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+}
+
+// Draw test using both color and depth attachments.
+TEST_P(MultisampledRenderToTextureTest, 2DColorDepthMultisampleDrawTest)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+ GLsizei size = 6;
+ // create complete framebuffer with depth buffer
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+ ASSERT_GL_NO_ERROR();
+
+ GLFramebuffer FBO;
+ glBindFramebuffer(GL_FRAMEBUFFER, FBO);
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+
+ GLRenderbuffer renderbuffer;
+ glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 4, GL_DEPTH_COMPONENT16, size, size);
+ ASSERT_GL_NO_ERROR();
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, renderbuffer);
+ EXPECT_GL_FRAMEBUFFER_COMPLETE(GL_FRAMEBUFFER);
+
+ // Set viewport and clear framebuffer
+ glViewport(0, 0, size, size);
+ glClearColor(0.0, 0.0, 0.0, 1.0);
+ glClearDepthf(0.5f);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ // Draw first green square
+ ANGLE_GL_PROGRAM(program, kBasicVertexShader, kGreenFragmentShader);
+ glEnable(GL_DEPTH_TEST);
+ glDepthFunc(GL_GREATER);
+ glUseProgram(program);
+ GLint positionLocation = glGetAttribLocation(program, "position");
+ ASSERT_NE(-1, positionLocation);
+
+ setupQuadVertexBuffer(0.8f, 0.5f);
+ glVertexAttribPointer(positionLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
+ glEnableVertexAttribArray(positionLocation);
+
+ // Tests that TRIANGLES works.
+ glDrawArrays(GL_TRIANGLES, 0, 6);
+ ASSERT_GL_NO_ERROR();
+
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::black);
+ EXPECT_PIXEL_COLOR_EQ(size / 2, size / 2, GLColor::green);
+
+ // Draw red square behind green square
+ ANGLE_GL_PROGRAM(program2, kBasicVertexShader, kRedFragmentShader);
+ glUseProgram(program2);
+ GLint positionLocation2 = glGetAttribLocation(program2, "position");
+ ASSERT_NE(-1, positionLocation2);
+
+ setupQuadVertexBuffer(0.7f, 1.0f);
+ glVertexAttribPointer(positionLocation2, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+ glDrawArrays(GL_TRIANGLES, 0, 6);
+ ASSERT_GL_NO_ERROR();
+ glDisable(GL_DEPTH_TEST);
+
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
+ EXPECT_PIXEL_COLOR_EQ(size / 2, size / 2, GLColor::green);
+
+ glDisableVertexAttribArray(0);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+}
+
+// Read pixels with pack buffer. ES3+.
+TEST_P(MultisampledRenderToTextureES3Test, MultisampleReadPixelsTest)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+
+ // PBO only available ES3 and above
+ ANGLE_SKIP_TEST_IF(getClientMajorVersion() < 3);
+ GLsizei size = 6;
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, size, size);
+ ASSERT_GL_NO_ERROR();
+
+ GLFramebuffer FBO;
+ glBindFramebuffer(GL_FRAMEBUFFER, FBO);
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+ EXPECT_GL_FRAMEBUFFER_COMPLETE(GL_FRAMEBUFFER);
+
+ // Set viewport and clear to red
+ glViewport(0, 0, size, size);
+ glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
+ glClear(GL_COLOR_BUFFER_BIT);
+ ASSERT_GL_NO_ERROR();
+
+ // Bind Pack Pixel Buffer and read to it
+ GLBuffer PBO;
+ glBindBuffer(GL_PIXEL_PACK_BUFFER, PBO);
+ glBufferData(GL_PIXEL_PACK_BUFFER, 4 * size * size, nullptr, GL_STATIC_DRAW);
+ glReadPixels(0, 0, size, size, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ ASSERT_GL_NO_ERROR();
+
+ // Retrieving pixel color
+ void *mappedPtr = glMapBufferRange(GL_PIXEL_PACK_BUFFER, 0, 32, GL_MAP_READ_BIT);
+ GLColor *dataColor = static_cast<GLColor *>(mappedPtr);
+ EXPECT_GL_NO_ERROR();
+
+ EXPECT_EQ(GLColor::red, dataColor[0]);
+
+ glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
+ EXPECT_GL_NO_ERROR();
+}
+
+// CopyTexImage from a multisampled texture functionality test.
+TEST_P(MultisampledRenderToTextureTest, MultisampleCopyTexImageTest)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+ GLsizei size = 16;
+
+ setupCopyTexProgram();
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+
+ // Disable mipmapping
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+ GLFramebuffer FBO;
+ glBindFramebuffer(GL_FRAMEBUFFER, FBO);
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+
+ // Set color for framebuffer
+ glClearColor(0.25f, 1.0f, 0.75f, 0.5f);
+ glClear(GL_COLOR_BUFFER_BIT);
+ ASSERT_GL_NO_ERROR();
+
+ GLTexture copyToTex;
+ glBindTexture(GL_TEXTURE_2D, copyToTex);
+
+ // Disable mipmapping
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, size, size, 0);
+ ASSERT_GL_NO_ERROR();
+
+ GLubyte expected[4] = {64, 255, 191, 255};
+ verifyResults(copyToTex, expected, size, 0, 0, size, size);
+}
+
+// CopyTexSubImage from a multisampled texture functionality test.
+TEST_P(MultisampledRenderToTextureTest, MultisampleCopyTexSubImageTest)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+ GLsizei size = 16;
+
+ setupCopyTexProgram();
+
+ GLTexture texture;
+ // Create texture in copyFBO0 with color (.25, 1, .75, .5)
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+
+ // Disable mipmapping
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+ GLFramebuffer copyFBO0;
+ glBindFramebuffer(GL_FRAMEBUFFER, copyFBO0);
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+
+ // Set color for
+ glClearColor(0.25f, 1.0f, 0.75f, 0.5f);
+ glClear(GL_COLOR_BUFFER_BIT);
+ ASSERT_GL_NO_ERROR();
+
+ // Create texture in copyFBO[1] with color (1, .75, .5, .25)
+ GLTexture texture1;
+ glBindTexture(GL_TEXTURE_2D, texture1);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+
+ // Disable mipmapping
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+ GLFramebuffer copyFBO1;
+ glBindFramebuffer(GL_FRAMEBUFFER, copyFBO1);
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture1, 0, 4);
+
+ // Set color for
+ glClearColor(1.0f, 0.75f, 0.5f, 0.25f);
+ glClear(GL_COLOR_BUFFER_BIT);
+ ASSERT_GL_NO_ERROR();
+
+ GLTexture copyToTex;
+ glBindTexture(GL_TEXTURE_2D, copyToTex);
+
+ // Disable mipmapping
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+ // copyFBO0 -> copyToTex
+ // copyToTex should hold what was originally in copyFBO0 : (.25, 1, .75, .5)
+ glBindFramebuffer(GL_FRAMEBUFFER, copyFBO0);
+ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, size, size, 0);
+ ASSERT_GL_NO_ERROR();
+
+ GLubyte expected0[4] = {64, 255, 191, 255};
+ verifyResults(copyToTex, expected0, size, 0, 0, size, size);
+
+ // copyFBO[1] - copySubImage -> copyToTex
+ // copyToTex should have subportion what was in copyFBO[1] : (1, .75, .5, .25)
+ // The rest should still be untouched: (.25, 1, .75, .5)
+ GLint half = size / 2;
+ glBindFramebuffer(GL_FRAMEBUFFER, copyFBO1);
+ glCopyTexSubImage2D(GL_TEXTURE_2D, 0, half, half, half, half, half, half);
+ ASSERT_GL_NO_ERROR();
+
+ GLubyte expected1[4] = {255, 191, 127, 255};
+ verifyResults(copyToTex, expected1, size, half, half, size, size);
+
+ // Verify rest is untouched
+ verifyResults(copyToTex, expected0, size, 0, 0, half, half);
+ verifyResults(copyToTex, expected0, size, 0, half, half, size);
+ verifyResults(copyToTex, expected0, size, half, 0, size, half);
+}
+
+// BlitFramebuffer functionality test. ES3+.
+TEST_P(MultisampledRenderToTextureES3Test, MultisampleBlitFramebufferTest)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+ // blitFramebuffer only available ES3 and above
+ ANGLE_SKIP_TEST_IF(getClientMajorVersion() < 3);
+
+ GLsizei size = 16;
+
+ // Create multisampled framebuffer to use as source.
+ GLRenderbuffer depthMS;
+ glBindRenderbuffer(GL_RENDERBUFFER, depthMS.get());
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 4, GL_DEPTH_COMPONENT24, size, size);
+
+ GLTexture colorMS;
+ glBindTexture(GL_TEXTURE_2D, colorMS);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+
+ GLFramebuffer fboMS;
+ glBindFramebuffer(GL_FRAMEBUFFER, fboMS);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthMS.get());
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ colorMS, 0, 4);
+ ASSERT_GL_NO_ERROR();
+
+ // Clear depth to 0.5 and color to green.
+ glClearDepthf(0.5f);
+ glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
+ glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+ glFlush();
+ ASSERT_GL_NO_ERROR();
+
+ // Draw red into the multisampled color buffer.
+ ANGLE_GL_PROGRAM(drawRed, essl1_shaders::vs::Simple(), essl1_shaders::fs::Red());
+ glEnable(GL_DEPTH_TEST);
+ glDepthFunc(GL_EQUAL);
+ drawQuad(drawRed.get(), essl1_shaders::PositionAttrib(), 0.0f);
+ ASSERT_GL_NO_ERROR();
+
+ // Create single sampled framebuffer to use as dest.
+ GLFramebuffer fboSS;
+ glBindFramebuffer(GL_FRAMEBUFFER, fboSS);
+ GLTexture colorSS;
+ glBindTexture(GL_TEXTURE_2D, colorSS);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorSS, 0);
+ ASSERT_GL_NO_ERROR();
+
+ // Bind MS to READ as SS is already bound to DRAW.
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, fboMS.get());
+ glBlitFramebuffer(0, 0, size, size, 0, 0, size, size, GL_COLOR_BUFFER_BIT, GL_NEAREST);
+ ASSERT_GL_NO_ERROR();
+
+ // Bind SS to READ so we can readPixels from it
+ glBindFramebuffer(GL_FRAMEBUFFER, fboSS.get());
+
+ EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
+ EXPECT_PIXEL_COLOR_EQ(size - 1, 0, GLColor::red);
+ EXPECT_PIXEL_COLOR_EQ(0, size - 1, GLColor::red);
+ EXPECT_PIXEL_COLOR_EQ(size - 1, size - 1, GLColor::red);
+ EXPECT_PIXEL_COLOR_EQ(size / 2, size / 2, GLColor::red);
+ ASSERT_GL_NO_ERROR();
+}
+
+// GenerateMipmap functionality test
+TEST_P(MultisampledRenderToTextureTest, MultisampleGenerateMipmapTest)
+{
+ ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_multisampled_render_to_texture"));
+ GLsizei size = 64;
+ // Vertex Shader source
+ constexpr char kVS[] = R"(attribute vec4 position;
+varying vec2 vTexCoord;
+
+void main()
+{
+ gl_Position = position;
+ vTexCoord = (position.xy * 0.5) + 0.5;
+})";
+
+ // Fragment Shader source
+ constexpr char kFS[] = R"(precision mediump float;
+uniform sampler2D uTexture;
+varying vec2 vTexCoord;
+
+void main()
+{
+ gl_FragColor = texture2D(uTexture, vTexCoord);
+})";
+
+ GLProgram m2DProgram;
+ m2DProgram.makeRaster(kVS, kFS);
+ ASSERT_GL_TRUE(m2DProgram.valid());
+
+ ASSERT_GL_NO_ERROR();
+
+ // Initialize texture with blue
+ GLTexture texture;
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, size, size, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+
+ GLFramebuffer FBO;
+ glBindFramebuffer(GL_FRAMEBUFFER, FBO);
+ glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ texture, 0, 4);
+ ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
+ glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glViewport(0, 0, size, size);
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ ASSERT_GL_NO_ERROR();
+
+ // Generate mipmap
+ glGenerateMipmap(GL_TEXTURE_2D);
+ ASSERT_GL_NO_ERROR();
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
+
+ // Now draw the texture to various different sized areas.
+ clearAndDrawQuad(m2DProgram, size, size);
+ EXPECT_PIXEL_COLOR_EQ(size / 2, size / 2, GLColor::blue);
+
+ // Use mip level 1
+ clearAndDrawQuad(m2DProgram, size / 2, size / 2);
+ EXPECT_PIXEL_COLOR_EQ(size / 4, size / 4, GLColor::blue);
+
+ // Use mip level 2
+ clearAndDrawQuad(m2DProgram, size / 4, size / 4);
+ EXPECT_PIXEL_COLOR_EQ(size / 8, size / 8, GLColor::blue);
+
+ ASSERT_GL_NO_ERROR();
+}
+ANGLE_INSTANTIATE_TEST(MultisampledRenderToTextureTest,
+ ES2_D3D9(),
+ ES2_D3D11(),
+ ES3_D3D11(),
+ ES2_OPENGL(),
+ ES3_OPENGL(),
+ ES2_OPENGLES(),
+ ES3_OPENGLES(),
+ ES2_VULKAN(),
+ ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(MultisampledRenderToTextureES3Test,
+ ES3_D3D11(),
+ ES3_OPENGL(),
+ ES3_OPENGLES(),
+ ES3_VULKAN());
+} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ObjectAllocationTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ObjectAllocationTest.cpp
index b0e59f7..9ed29d3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ObjectAllocationTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ObjectAllocationTest.cpp
@@ -51,4 +51,4 @@
} // anonymous namespace
-ANGLE_INSTANTIATE_TEST(ObjectAllocationTest, ES3_OPENGL(), ES3_D3D11());
\ No newline at end of file
+ANGLE_INSTANTIATE_TEST_ES3(ObjectAllocationTest);
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/OcclusionQueriesTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/OcclusionQueriesTest.cpp
index 3d2f9d5..8c721e0 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/OcclusionQueriesTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/OcclusionQueriesTest.cpp
@@ -194,6 +194,9 @@
ANGLE_SKIP_TEST_IF(GetParam() == ES2_D3D9() || GetParam() == ES2_D3D11() ||
GetParam() == ES3_D3D11() || GetParam() == ES2_VULKAN());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
+
glDepthMask(GL_TRUE);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
@@ -342,12 +345,4 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(OcclusionQueriesTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(OcclusionQueriesTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PBOExtensionTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PBOExtensionTest.cpp
index 10f3ae0..97e4bbb 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PBOExtensionTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PBOExtensionTest.cpp
@@ -144,4 +144,4 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(PBOExtensionTest, ES2_D3D11(), ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(PBOExtensionTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PackUnpackTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PackUnpackTest.cpp
index fedac73..6c24826 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PackUnpackTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PackUnpackTest.cpp
@@ -141,6 +141,8 @@
// numbers.
TEST_P(PackUnpackTest, PackUnpackSnormNormal)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to output the same value as the input
compareBeforeAfter(mSNormProgram, 0.5f, -0.2f);
compareBeforeAfter(mSNormProgram, -0.35f, 0.75f);
@@ -152,6 +154,8 @@
// numbers.
TEST_P(PackUnpackTest, PackUnpackUnormNormal)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to output the same value as the input
compareBeforeAfter(mUNormProgram, 0.5f, 0.2f, 0.5f, 0.2f);
compareBeforeAfter(mUNormProgram, 0.35f, 0.75f, 0.35f, 0.75f);
@@ -163,6 +167,8 @@
// numbers.
TEST_P(PackUnpackTest, PackUnpackHalfNormal)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to output the same value as the input
compareBeforeAfter(mHalfProgram, 0.5f, -0.2f);
compareBeforeAfter(mHalfProgram, -0.35f, 0.75f);
@@ -174,6 +180,8 @@
// floating numbers.
TEST_P(PackUnpackTest, PackUnpackSnormSubnormal)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to output the same value as the input
compareBeforeAfter(mSNormProgram, 0.00001f, -0.00001f);
}
@@ -182,6 +190,8 @@
// floating numbers.
TEST_P(PackUnpackTest, PackUnpackUnormSubnormal)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to output the same value as the input for positive numbers and clamp
// to [0, 1]
compareBeforeAfter(mUNormProgram, 0.00001f, -0.00001f, 0.00001f, 0.0f);
@@ -191,6 +201,8 @@
// numbers.
TEST_P(PackUnpackTest, PackUnpackHalfSubnormal)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to output the same value as the input
compareBeforeAfter(mHalfProgram, 0.00001f, -0.00001f);
}
@@ -199,6 +211,8 @@
// numbers.
TEST_P(PackUnpackTest, PackUnpackSnormZero)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to output the same value as the input
compareBeforeAfter(mSNormProgram, 0.00000f, -0.00000f);
}
@@ -207,6 +221,8 @@
// numbers.
TEST_P(PackUnpackTest, PackUnpackUnormZero)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
compareBeforeAfter(mUNormProgram, 0.00000f, -0.00000f, 0.00000f, 0.00000f);
}
@@ -214,6 +230,8 @@
// numbers.
TEST_P(PackUnpackTest, PackUnpackHalfZero)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to output the same value as the input
compareBeforeAfter(mHalfProgram, 0.00000f, -0.00000f);
}
@@ -222,6 +240,8 @@
// numbers.
TEST_P(PackUnpackTest, PackUnpackUnormOverflow)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to clamp the input to [0, 1]
compareBeforeAfter(mUNormProgram, 67000.0f, -67000.0f, 1.0f, 0.0f);
}
@@ -230,9 +250,11 @@
// numbers.
TEST_P(PackUnpackTest, PackUnpackSnormOverflow)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsAndroid() && IsVulkan()) || isSwiftshader());
// Expect the shader to clamp the input to [-1, 1]
compareBeforeAfter(mSNormProgram, 67000.0f, -67000.0f, 1.0f, -1.0f);
}
-ANGLE_INSTANTIATE_TEST(PackUnpackTest, ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3(PackUnpackTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ParallelShaderCompileTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ParallelShaderCompileTest.cpp
index 8da54e7..b3f8b38 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ParallelShaderCompileTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ParallelShaderCompileTest.cpp
@@ -389,13 +389,8 @@
runner.run(this);
}
-ANGLE_INSTANTIATE_TEST(ParallelShaderCompileTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(ParallelShaderCompileTest);
-ANGLE_INSTANTIATE_TEST(ParallelShaderCompileTestES31, ES31_OPENGL(), ES31_OPENGLES(), ES31_D3D11());
+ANGLE_INSTANTIATE_TEST_ES31(ParallelShaderCompileTestES31);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PathRenderingTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PathRenderingTest.cpp
index 6e6aadf..b6a3793 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PathRenderingTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PathRenderingTest.cpp
@@ -1989,22 +1989,6 @@
} // namespace
-ANGLE_INSTANTIATE_TEST(CHROMIUMPathRenderingTest,
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(CHROMIUMPathRenderingDrawTest,
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES2_VULKAN());
-
-ANGLE_INSTANTIATE_TEST(CHROMIUMPathRenderingWithTexturingTest,
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(CHROMIUMPathRenderingTest);
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(CHROMIUMPathRenderingDrawTest);
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(CHROMIUMPathRenderingWithTexturingTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PbufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PbufferTest.cpp
index 5ebabda..e9a0dae 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PbufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PbufferTest.cpp
@@ -301,9 +301,4 @@
glDeleteTextures(1, &texture);
}
-ANGLE_INSTANTIATE_TEST(PbufferTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(PbufferTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PointSpritesTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PointSpritesTest.cpp
index 0f9a373..a157435 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/PointSpritesTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/PointSpritesTest.cpp
@@ -480,6 +480,10 @@
// rendered at all on AMD. http://anglebug.com/2113
ANGLE_SKIP_TEST_IF(IsAMD() && IsVulkan());
+ // TODO(hqle): Metal on macbook also has problem with drawing point outside framebuffer.
+ // http://anglebug.com/4135
+ ANGLE_SKIP_TEST_IF(IsMetal());
+
GLfloat pointSizeRange[2] = {};
glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, pointSizeRange);
GLfloat maxPointSize = pointSizeRange[1];
@@ -541,9 +545,4 @@
// We test on D3D11 9_3 because the existing D3D11 PointSprite implementation
// uses Geometry Shaders which are not supported for 9_3.
// D3D9 and D3D11 are also tested to ensure no regressions.
-ANGLE_INSTANTIATE_TEST(PointSpritesTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(PointSpritesTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramBinaryTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramBinaryTest.cpp
index 1f3d4e1..1f87cee 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramBinaryTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramBinaryTest.cpp
@@ -274,14 +274,7 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(ProgramBinaryTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(ProgramBinaryTest);
class ProgramBinaryES3Test : public ANGLETest
{
@@ -620,11 +613,7 @@
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::magenta);
}
-ANGLE_INSTANTIATE_TEST(ProgramBinaryES3Test,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(ProgramBinaryES3Test);
class ProgramBinaryES31Test : public ANGLETest
{
@@ -650,6 +639,8 @@
GLint binaryFormatCount = 0;
glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &binaryFormatCount);
ANGLE_SKIP_TEST_IF(!binaryFormatCount);
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
constexpr char kCS[] =
"#version 310 es\n"
@@ -691,6 +682,8 @@
// Tests that saving and loading a program attached with computer shader.
TEST_P(ProgramBinaryES31Test, ProgramBinaryWithAtomicCounterComputeShader)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid() && IsVulkan());
// We can't run the test if no program binary formats are supported.
GLint binaryFormatCount = 0;
glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &binaryFormatCount);
@@ -811,7 +804,7 @@
ASSERT_GL_NO_ERROR();
}
-ANGLE_INSTANTIATE_TEST(ProgramBinaryES31Test, ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES31(ProgramBinaryES31Test);
class ProgramBinaryTransformFeedbackTest : public ANGLETest
{
@@ -878,7 +871,9 @@
ANGLE_SKIP_TEST_IF(!getAvailableProgramBinaryFormatCount());
// http://anglebug.com/3690
- ANGLE_SKIP_TEST_IF(IsAndroid() && IsPixel2() && IsVulkan());
+ ANGLE_SKIP_TEST_IF(IsAndroid() && (IsPixel2() || IsPixel2XL()) && IsVulkan());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid() && IsOpenGLES());
std::vector<uint8_t> binary(0);
GLint programLength = 0;
@@ -922,7 +917,7 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(ProgramBinaryTransformFeedbackTest, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(ProgramBinaryTransformFeedbackTest);
// For the ProgramBinariesAcrossPlatforms tests, we need two sets of params:
// - a set to save the program binary
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramInterfaceTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramInterfaceTest.cpp
index bebff37..8e19c74 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramInterfaceTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramInterfaceTest.cpp
@@ -122,6 +122,8 @@
// Tests glGetProgramResourceLocation.
TEST_P(ProgramInterfaceTestES31, GetResourceLocation)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kVS[] =
"#version 310 es\n"
"precision highp float;\n"
@@ -181,6 +183,8 @@
// Tests glGetProgramResource.
TEST_P(ProgramInterfaceTestES31, GetResource)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kVS[] =
"#version 310 es\n"
"precision highp float;\n"
@@ -1195,10 +1199,6 @@
glDeleteProgram(program);
}
-ANGLE_INSTANTIATE_TEST(ProgramInterfaceTestES31,
- ES31_OPENGL(),
- ES31_OPENGLES(),
- ES31_D3D11(),
- ES31_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES31(ProgramInterfaceTestES31);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramParameterTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramParameterTest.cpp
index fe6c88e..2c82bb5 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramParameterTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramParameterTest.cpp
@@ -70,12 +70,6 @@
glDeleteProgram(program);
}
-ANGLE_INSTANTIATE_TEST(ProgramParameterTest,
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_D3D11(),
- ES31_OPENGL(),
- ES31_OPENGLES(),
- ES31_D3D11());
-ANGLE_INSTANTIATE_TEST(ProgramParameterTestES31, ES31_OPENGL(), ES31_OPENGLES(), ES31_D3D11());
+ANGLE_INSTANTIATE_TEST_ES3_AND_ES31(ProgramParameterTest);
+ANGLE_INSTANTIATE_TEST_ES31(ProgramParameterTestES31);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramPipelineTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramPipelineTest.cpp
index ae4f6cd..65351f5 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramPipelineTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramPipelineTest.cpp
@@ -105,11 +105,7 @@
EXPECT_GL_NO_ERROR();
}
-ANGLE_INSTANTIATE_TEST(ProgramPipelineTest,
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES31_OPENGL(),
- ES31_OPENGLES());
-ANGLE_INSTANTIATE_TEST(ProgramPipelineTest31, ES31_OPENGL(), ES31_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3_AND_ES31(ProgramPipelineTest);
+ANGLE_INSTANTIATE_TEST_ES31(ProgramPipelineTest31);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProvokingVertexTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProvokingVertexTest.cpp
index 05840a6..e9af78b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProvokingVertexTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProvokingVertexTest.cpp
@@ -135,6 +135,9 @@
// Ensure that any provoking vertex shenanigans still gives correct vertex streams.
TEST_P(ProvokingVertexTest, FlatTriWithTransformFeedback)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid() && IsVulkan());
+
// TODO(cwallez) figure out why it is broken on AMD on Mac
ANGLE_SKIP_TEST_IF(IsOSX() && IsAMD());
@@ -176,6 +179,8 @@
// Test drawing a simple line with flat shading, and different valued vertices.
TEST_P(ProvokingVertexTest, FlatLine)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF((IsWindows() || IsLinux()) && IsVulkan());
GLfloat halfPixel = 1.0f / static_cast<GLfloat>(getWindowWidth());
GLint vertexData[] = {1, 2};
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ReadPixelsTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ReadPixelsTest.cpp
index 3c4d57a..289b0cc 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ReadPixelsTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ReadPixelsTest.cpp
@@ -695,17 +695,9 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(ReadPixelsTest, ES2_D3D11(), ES2_OPENGL(), ES2_OPENGLES(), ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(ReadPixelsPBOTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(ReadPixelsPBODrawTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(ReadPixelsMultisampleTest,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(ReadPixelsTextureTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(ReadPixelsErrorTest,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(ReadPixelsTest);
+ANGLE_INSTANTIATE_TEST_ES3(ReadPixelsPBOTest);
+ANGLE_INSTANTIATE_TEST_ES3(ReadPixelsPBODrawTest);
+ANGLE_INSTANTIATE_TEST_ES3(ReadPixelsMultisampleTest);
+ANGLE_INSTANTIATE_TEST_ES3(ReadPixelsTextureTest);
+ANGLE_INSTANTIATE_TEST_ES3(ReadPixelsErrorTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RenderbufferMultisampleTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RenderbufferMultisampleTest.cpp
index c72fdd5..d81d17b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RenderbufferMultisampleTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RenderbufferMultisampleTest.cpp
@@ -74,11 +74,5 @@
}
}
-ANGLE_INSTANTIATE_TEST(RenderbufferMultisampleTest,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES31_D3D11(),
- ES31_OPENGL(),
- ES31_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3_AND_ES31(RenderbufferMultisampleTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RendererTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RendererTest.cpp
index 3cb5811..4db4288 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RendererTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RendererTest.cpp
@@ -172,28 +172,5 @@
// Select configurations (e.g. which renderer, which GLES major version) these tests should be run
// against.
-ANGLE_INSTANTIATE_TEST(RendererTest,
- // ES2 on top of D3D9
- ES2_D3D9(),
-
- // ES on top of D3D11.
- ES2_D3D11(),
- ES3_D3D11(),
-
- // ES on top of desktop OpenGL.
- ES2_OPENGL(),
- ES3_OPENGL(),
-
- // ES on top of OpenGL ES.
- ES2_OPENGLES(),
- ES3_OPENGLES(),
-
- // All ES version on top of the NULL backend.
- ES2_NULL(),
- ES3_NULL(),
- ES31_NULL(),
-
- // ES on top of Vulkan.
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3_AND_ES31_AND_NULL(RendererTest);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RequestExtensionTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RequestExtensionTest.cpp
index 0d87cd0..b162182 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RequestExtensionTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RequestExtensionTest.cpp
@@ -69,13 +69,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(RequestExtensionTest,
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(RequestExtensionTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustBufferAccessBehaviorTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustBufferAccessBehaviorTest.cpp
index 3629186..08917a2 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustBufferAccessBehaviorTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustBufferAccessBehaviorTest.cpp
@@ -564,17 +564,6 @@
}
}
-ANGLE_INSTANTIATE_TEST(RobustBufferAccessBehaviorTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES31_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES31_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES31_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3_AND_ES31(RobustBufferAccessBehaviorTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustClientMemoryTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustClientMemoryTest.cpp
index 4c43ab8b..28556c3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustClientMemoryTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustClientMemoryTest.cpp
@@ -200,14 +200,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(RobustClientMemoryTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(RobustClientMemoryTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustResourceInitTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustResourceInitTest.cpp
index 2c08d56..09dfd8f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustResourceInitTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustResourceInitTest.cpp
@@ -842,6 +842,8 @@
// Flaky failure on Linux / NV / Vulkan when run in a sequence. http://anglebug.com/3416
ANGLE_SKIP_TEST_IF(IsVulkan() && IsNVIDIA() && IsLinux());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsWindows() && IsVulkan());
GLTexture tex;
setupTexture(&tex);
@@ -1634,6 +1636,8 @@
{
ANGLE_SKIP_TEST_IF(!hasGLExtension());
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_texture_compression_dxt1"));
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
constexpr int width = 8;
constexpr int height = 8;
@@ -1785,6 +1789,8 @@
TEST_P(RobustResourceInitTestES31, Multisample2DTexture)
{
ANGLE_SKIP_TEST_IF(!hasGLExtension());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
GLTexture texture;
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, texture);
@@ -1947,18 +1953,10 @@
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
}
-ANGLE_INSTANTIATE_TEST(RobustResourceInitTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(RobustResourceInitTest);
-ANGLE_INSTANTIATE_TEST(RobustResourceInitTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3(RobustResourceInitTestES3);
-ANGLE_INSTANTIATE_TEST(RobustResourceInitTestES31, ES31_OPENGL(), ES31_D3D11());
+ANGLE_INSTANTIATE_TEST_ES31(RobustResourceInitTestES31);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBFramebufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBFramebufferTest.cpp
index 517e6c1..4d8ddd1 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBFramebufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBFramebufferTest.cpp
@@ -106,14 +106,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(SRGBFramebufferTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(SRGBFramebufferTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp
index b685295..163f71a 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp
@@ -363,14 +363,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(SRGBTextureTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(SRGBTextureTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SamplersTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SamplersTest.cpp
index 7e061f8..4dd63c3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SamplersTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SamplersTest.cpp
@@ -40,6 +40,8 @@
// Verify that samplerParameterf supports TEXTURE_MAX_ANISOTROPY_EXT valid values.
TEST_P(SamplersTest, ValidTextureSamplerMaxAnisotropyExt)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
GLSampler sampler;
// Exact min
@@ -60,6 +62,8 @@
// GL_TEXTURE_MAX_ANISOTROPY_EXT
TEST_P(SamplersTest, InvalidUnderTextureSamplerMaxAnisotropyExt)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
GLSampler sampler;
// Under min
@@ -70,6 +74,8 @@
// GL_TEXTURE_MAX_ANISOTROPY_EXT
TEST_P(SamplersTest, InvalidOverTextureSamplerMaxAnisotropyExt)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
GLSampler sampler;
GLfloat maxValue = 0.0f;
@@ -82,5 +88,5 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
// Samplers are only supported on ES3.
-ANGLE_INSTANTIATE_TEST(SamplersTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(SamplersTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SemaphoreTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SemaphoreTest.cpp
index 0ad11d0..3c4cf12 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SemaphoreTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SemaphoreTest.cpp
@@ -65,14 +65,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(SemaphoreTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(SemaphoreTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ShaderStorageBufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ShaderStorageBufferTest.cpp
index 2ffb3a7..b3456d0 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ShaderStorageBufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ShaderStorageBufferTest.cpp
@@ -413,6 +413,8 @@
// Tests reading and writing to a shader storage buffer bound at an offset.
TEST_P(ShaderStorageBufferTest31, ShaderStorageBufferReadWriteOffset)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
constexpr char kCS[] = R"(#version 310 es
layout(local_size_x=1, local_size_y=1, local_size_z=1) in;
@@ -2222,10 +2224,6 @@
EXPECT_GL_NO_ERROR();
}
-ANGLE_INSTANTIATE_TEST(ShaderStorageBufferTest31,
- ES31_OPENGL(),
- ES31_OPENGLES(),
- ES31_D3D11(),
- ES31_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES31(ShaderStorageBufferTest31);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp
index e4e1f27..1d8c360 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp
@@ -31,11 +31,6 @@
gl_FragColor = vec4(0, 1, 0, 1);
})";
-constexpr std::array<GLenum, 6> kCubeFaces = {
- {GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}};
-
class SimpleOperationTest : public ANGLETest
{
protected:
@@ -1085,16 +1080,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(SimpleOperationTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_D3D11_PRESENT_PATH_FAST(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES2_VULKAN_SWIFTSHADER());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(SimpleOperationTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SixteenBppTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SixteenBppTextureTest.cpp
index d32a9d4..5088daa 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SixteenBppTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SixteenBppTextureTest.cpp
@@ -478,13 +478,8 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(SixteenBppTextureTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(SixteenBppTextureTest);
-ANGLE_INSTANTIATE_TEST(SixteenBppTextureTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3(SixteenBppTextureTestES3);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp
index 516aec7..8029d64 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp
@@ -491,6 +491,8 @@
// Ensure that BlitFramebuffer syncs framebuffer changes.
TEST_P(StateChangeTestES3, BlitFramebufferSync)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
glBindFramebuffer(GL_FRAMEBUFFER, mFramebuffer);
// Init first texture to red
@@ -560,6 +562,8 @@
// Adapted partially from WebGL 2 test "renderbuffers/invalidate-framebuffer"
TEST_P(StateChangeTestES3, IncompleteRenderbufferAttachmentInvalidateSync)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
glBindFramebuffer(GL_FRAMEBUFFER, mFramebuffer);
glBindRenderbuffer(GL_RENDERBUFFER, mRenderbuffer);
GLint samples = 0;
@@ -902,14 +906,30 @@
"{\n"
" colorOut = varyColor;\n"
"}";
- ANGLE_GL_PROGRAM(dualProgram, kDualVS, kDualFS);
- GLint positionLocation = glGetAttribLocation(dualProgram, "position");
- ASSERT_NE(-1, positionLocation);
- GLint colorLocation = glGetAttribLocation(dualProgram, "color");
- ASSERT_NE(-1, colorLocation);
- GLint singlePositionLocation = glGetAttribLocation(singleProgram, "position");
- ASSERT_NE(-1, singlePositionLocation);
+ ANGLE_GL_PROGRAM(dualProgram, kDualVS, kDualFS);
+
+ // Force consistent attribute locations
+ constexpr GLint positionLocation = 0;
+ constexpr GLint colorLocation = 1;
+
+ glBindAttribLocation(singleProgram, positionLocation, "position");
+ glBindAttribLocation(dualProgram, positionLocation, "position");
+ glBindAttribLocation(dualProgram, colorLocation, "color");
+
+ {
+ glLinkProgram(singleProgram);
+ GLint linkStatus;
+ glGetProgramiv(singleProgram, GL_LINK_STATUS, &linkStatus);
+ ASSERT_NE(linkStatus, 0);
+ }
+
+ {
+ glLinkProgram(dualProgram);
+ GLint linkStatus;
+ glGetProgramiv(dualProgram, GL_LINK_STATUS, &linkStatus);
+ ASSERT_NE(linkStatus, 0);
+ }
glUseProgram(singleProgram);
@@ -924,8 +944,8 @@
GLVertexArray vertexArray;
glBindVertexArray(vertexArray);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
- glVertexAttribPointer(singlePositionLocation, 3, GL_FLOAT, GL_FALSE, 0, nullptr);
- glEnableVertexAttribArray(singlePositionLocation);
+ glVertexAttribPointer(positionLocation, 3, GL_FLOAT, GL_FALSE, 0, nullptr);
+ glEnableVertexAttribArray(positionLocation);
// Should draw red.
glDrawArrays(GL_TRIANGLES, 0, 6);
@@ -1006,6 +1026,8 @@
// Tests that changing an active program invalidates the sampler metadata properly.
TEST_P(StateChangeTestES3, SamplerMetadataUpdateOnSetProgram)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid() && IsOpenGLES());
GLVertexArray vertexArray;
glBindVertexArray(vertexArray);
@@ -1046,6 +1068,8 @@
// Tests that redefining Buffer storage syncs with the Transform Feedback object.
TEST_P(StateChangeTestES3, RedefineTransformFeedbackBuffer)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
// Create the most simple program possible - simple a passthrough for a float attribute.
constexpr char kVertexShader[] = R"(#version 300 es
in float valueIn;
@@ -1173,9 +1197,6 @@
// Draw an hourglass with a drawElements call followed by a square with drawArrays.
TEST_P(LineLoopStateChangeTest, DrawElementsThenDrawArrays)
{
- // http://anglebug.com/3361
- ANGLE_SKIP_TEST_IF(IsAMD() && IsVulkan() && IsWindows());
-
ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Simple(), essl1_shaders::fs::Blue());
glUseProgram(program);
@@ -1444,6 +1465,8 @@
// frame.
TEST_P(SimpleStateChangeTest, DrawArraysThenDrawElements)
{
+ // http://anglebug.com/4121
+ ANGLE_SKIP_TEST_IF(IsIntel() && IsLinux() && IsOpenGLES());
ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Simple(), essl1_shaders::fs::Blue());
glUseProgram(program);
@@ -1775,6 +1798,8 @@
// verify all the rendering results are the same.
TEST_P(SimpleStateChangeTest, DrawRepeatUnalignedVboChange)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader() && IsWindows());
const int kRepeat = 2;
// set up VBO, colorVBO is unaligned
@@ -1891,8 +1916,6 @@
// Tests updating a buffer's contents while in use, without redefining it.
TEST_P(SimpleStateChangeTest, UpdateBufferInUse)
{
- // tobine: Started failing w/ custom cmd buffers. http://anglebug.com/3255
- ANGLE_SKIP_TEST_IF(IsAMD() && IsWindows() && IsVulkan());
std::vector<GLColor> redColorData(6, GLColor::red);
GLBuffer buffer;
@@ -2229,6 +2252,8 @@
void SimpleStateChangeTest::updateTextureBoundToFramebufferHelper(UpdateFunc updateFunc)
{
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_ANGLE_framebuffer_blit"));
+
std::vector<GLColor> red(4, GLColor::red);
std::vector<GLColor> green(4, GLColor::green);
@@ -2281,6 +2306,8 @@
// Tests that TexSubImage updates are flushed before rendering.
TEST_P(SimpleStateChangeTest, TexSubImageOnTextureBoundToFrambuffer)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid() && IsOpenGLES());
auto updateFunc = [](GLenum textureBinding, GLTexture *tex, GLint x, GLint y,
const GLColor &color) {
glBindTexture(textureBinding, *tex);
@@ -2293,6 +2320,8 @@
// Tests that CopyTexSubImage updates are flushed before rendering.
TEST_P(SimpleStateChangeTest, CopyTexSubImageOnTextureBoundToFrambuffer)
{
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_ANGLE_framebuffer_blit"));
+
GLTexture copySource;
glBindTexture(GL_TEXTURE_2D, copySource);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
@@ -2321,6 +2350,9 @@
// target.
TEST_P(SimpleStateChangeTestES3, ReadFramebufferDrawFramebufferDifferentAttachments)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid() && IsOpenGLES());
+
GLRenderbuffer drawColorBuffer;
glBindRenderbuffer(GL_RENDERBUFFER, drawColorBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, 1, 1);
@@ -2774,6 +2806,8 @@
// Tries to relink a program in use and use it again to draw something else.
TEST_P(SimpleStateChangeTest, RelinkProgram)
{
+ // http://anglebug.com/4121
+ ANGLE_SKIP_TEST_IF(IsIntel() && IsLinux() && IsOpenGLES());
const GLuint program = glCreateProgram();
GLuint vs = CompileShader(GL_VERTEX_SHADER, essl1_shaders::vs::Simple());
@@ -3159,9 +3193,6 @@
// Test that we can alternate between image textures between different dispatchs.
TEST_P(SimpleStateChangeTestES31, DispatchImageTextureAThenTextureBThenTextureA)
{
- // Fails in the last EXPECT call. http://anglebug.com/3879
- ANGLE_SKIP_TEST_IF(IsVulkan() && IsWindows() && IsAMD());
-
std::array<GLColor, 4> colorsTexA = {
{GLColor::cyan, GLColor::cyan, GLColor::cyan, GLColor::cyan}};
@@ -4359,21 +4390,14 @@
}
} // anonymous namespace
-ANGLE_INSTANTIATE_TEST(StateChangeTest, ES2_D3D9(), ES2_D3D11(), ES2_OPENGL(), ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(LineLoopStateChangeTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(StateChangeRenderTest, ES2_D3D9(), ES2_D3D11(), ES2_OPENGL(), ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(StateChangeTestES3, ES3_D3D11(), ES3_OPENGL());
-ANGLE_INSTANTIATE_TEST(SimpleStateChangeTest, ES2_D3D11(), ES2_VULKAN(), ES2_OPENGL());
-ANGLE_INSTANTIATE_TEST(SimpleStateChangeTestES3, ES3_OPENGL(), ES3_D3D11(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(SimpleStateChangeTestES31, ES31_OPENGL(), ES31_D3D11(), ES31_VULKAN());
-ANGLE_INSTANTIATE_TEST(ValidationStateChangeTest, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(WebGL2ValidationStateChangeTest, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(ValidationStateChangeTestES31, ES31_OPENGL(), ES31_D3D11(), ES31_VULKAN());
-ANGLE_INSTANTIATE_TEST(WebGLComputeValidationStateChangeTest,
- ES31_D3D11(),
- ES31_OPENGL(),
- ES31_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(StateChangeTest);
+ANGLE_INSTANTIATE_TEST_ES2(LineLoopStateChangeTest);
+ANGLE_INSTANTIATE_TEST_ES2(StateChangeRenderTest);
+ANGLE_INSTANTIATE_TEST_ES3(StateChangeTestES3);
+ANGLE_INSTANTIATE_TEST_ES2(SimpleStateChangeTest);
+ANGLE_INSTANTIATE_TEST_ES3(SimpleStateChangeTestES3);
+ANGLE_INSTANTIATE_TEST_ES31(SimpleStateChangeTestES31);
+ANGLE_INSTANTIATE_TEST_ES3(ValidationStateChangeTest);
+ANGLE_INSTANTIATE_TEST_ES3(WebGL2ValidationStateChangeTest);
+ANGLE_INSTANTIATE_TEST_ES31(ValidationStateChangeTestES31);
+ANGLE_INSTANTIATE_TEST_ES31(WebGLComputeValidationStateChangeTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SwizzleTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SwizzleTest.cpp
index da1eebd..94f9442 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SwizzleTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SwizzleTest.cpp
@@ -432,7 +432,7 @@
EXPECT_PIXEL_COLOR_EQ(0, 0, expectedUpdateData);
}
-ANGLE_INSTANTIATE_TEST(SwizzleTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(SwizzleIntegerTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(SwizzleTest);
+ANGLE_INSTANTIATE_TEST_ES3(SwizzleIntegerTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SyncQueriesTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SyncQueriesTest.cpp
index f911550..0c4b80a 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SyncQueriesTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SyncQueriesTest.cpp
@@ -85,14 +85,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(SyncQueriesTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(SyncQueriesTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureExternalUpdateTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureExternalUpdateTest.cpp
index 811d97d..b8c640b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureExternalUpdateTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureExternalUpdateTest.cpp
@@ -72,14 +72,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(TextureExternalUpdateTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(TextureExternalUpdateTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureMultisampleTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureMultisampleTest.cpp
index 539aacd..d5c21b3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureMultisampleTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureMultisampleTest.cpp
@@ -298,6 +298,8 @@
TEST_P(TextureMultisampleTest, MultisampleTargetFramebufferTexture2D)
{
ANGLE_SKIP_TEST_IF(lessThanES31MultisampleExtNotSupported());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
GLint samples = 1;
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, mTexture);
texStorageMultisample(GL_TEXTURE_2D_MULTISAMPLE, samples, GL_RGBA8, 64, 64, GL_FALSE);
@@ -312,6 +314,8 @@
// Tests basic functionality of glTexStorage2DMultisample.
TEST_P(TextureMultisampleTest, ValidateTextureStorageMultisampleParameters)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
ANGLE_SKIP_TEST_IF(lessThanES31MultisampleExtNotSupported());
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, mTexture);
@@ -386,6 +390,8 @@
TEST_P(TextureMultisampleTest, GetTexLevelParameter)
{
ANGLE_SKIP_TEST_IF(lessThanES31MultisampleExtNotSupported());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, mTexture);
texStorageMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGBA8, 1, 1, GL_TRUE);
@@ -1026,16 +1032,7 @@
}
}
-ANGLE_INSTANTIATE_TEST(TextureMultisampleTest,
- ES3_D3D11(),
- ES31_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES31_OPENGL(),
- ES31_OPENGLES());
-ANGLE_INSTANTIATE_TEST(NegativeTextureMultisampleTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(TextureMultisampleArrayWebGLTest,
- ES31_D3D11(),
- ES31_OPENGL(),
- ES31_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3_AND_ES31(TextureMultisampleTest);
+ANGLE_INSTANTIATE_TEST_ES3(NegativeTextureMultisampleTest);
+ANGLE_INSTANTIATE_TEST_ES31(TextureMultisampleArrayWebGLTest);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureRectangleTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureRectangleTest.cpp
index cae6d34..290841b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureRectangleTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureRectangleTest.cpp
@@ -452,7 +452,7 @@
ASSERT_GL_NO_ERROR();
}
-ANGLE_INSTANTIATE_TEST(TextureRectangleTest, ES2_OPENGL(), ES3_OPENGL(), ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureRectangleTestES3, ES3_OPENGL());
-ANGLE_INSTANTIATE_TEST(TextureRectangleTestES31, ES31_OPENGL());
+ANGLE_INSTANTIATE_TEST_ES2(TextureRectangleTest);
+ANGLE_INSTANTIATE_TEST_ES3(TextureRectangleTestES3);
+ANGLE_INSTANTIATE_TEST_ES31(TextureRectangleTestES31);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp
index 6031f04..d3f105f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp
@@ -16,6 +16,9 @@
constexpr GLuint kPixelTolerance = 1u;
constexpr GLfloat kPixelTolerance32F = 0.01f;
+// Single compressed ETC2 block of source pixels all set red
+constexpr uint8_t kCompressedImageETC2[] = {0x7E, 0x80, 0x04, 0x7F, 0x00, 0x07, 0xE0, 0x00};
+
// Take a pixel, and reset the components not covered by the format to default
// values. In particular, the default value for the alpha component is 255
// (1.0 as unsigned normalized fixed point value).
@@ -45,6 +48,30 @@
}
}
+GLColor16UI SliceFormatColor16UI(GLenum format, GLColor16UI full)
+{
+ switch (format)
+ {
+ case GL_RED:
+ return GLColor16UI(full.R, 0, 0, 0xFFFF);
+ case GL_RG:
+ return GLColor16UI(full.R, full.G, 0, 0xFFFF);
+ case GL_RGB:
+ return GLColor16UI(full.R, full.G, full.B, 0xFFFF);
+ case GL_RGBA:
+ return full;
+ case GL_LUMINANCE:
+ return GLColor16UI(full.R, full.R, full.R, 0xFFFF);
+ case GL_ALPHA:
+ return GLColor16UI(0, 0, 0, full.R);
+ case GL_LUMINANCE_ALPHA:
+ return GLColor16UI(full.R, full.R, full.R, full.G);
+ default:
+ EXPECT_TRUE(false);
+ return GLColor16UI(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF);
+ }
+}
+
// As above, for 32F colors
GLColor32F SliceFormatColor32F(GLenum format, GLColor32F full)
{
@@ -1395,6 +1422,32 @@
}
};
+class PBOCompressedTextureTest : public Texture2DTest
+{
+ protected:
+ PBOCompressedTextureTest() : Texture2DTest() {}
+
+ void testSetUp() override
+ {
+ TexCoordDrawTest::testSetUp();
+ glGenTextures(1, &mTexture2D);
+ glBindTexture(GL_TEXTURE_2D, mTexture2D);
+ EXPECT_GL_NO_ERROR();
+
+ setUpProgram();
+
+ glGenBuffers(1, &mPBO);
+ }
+
+ void testTearDown() override
+ {
+ glDeleteBuffers(1, &mPBO);
+ Texture2DTest::testTearDown();
+ }
+
+ GLuint mPBO;
+};
+
TEST_P(Texture2DTest, NegativeAPISubImage)
{
glBindTexture(GL_TEXTURE_2D, mTexture2D);
@@ -1739,53 +1792,176 @@
// initialized the image with a default color.
TEST_P(Texture2DTest, TexStorageWithPBO)
{
- if (IsGLExtensionEnabled("NV_pixel_buffer_object"))
+ // http://anglebug.com/4126
+ ANGLE_SKIP_TEST_IF(IsOSX() && IsOpenGL());
+
+ if (getClientMajorVersion() < 3)
{
- int width = getWindowWidth();
- int height = getWindowHeight();
-
- GLuint tex2D;
- glGenTextures(1, &tex2D);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, tex2D);
-
- // Fill with red
- std::vector<GLubyte> pixels(3 * 16 * 16);
- for (size_t pixelId = 0; pixelId < 16 * 16; ++pixelId)
- {
- pixels[pixelId * 3 + 0] = 255;
- pixels[pixelId * 3 + 1] = 0;
- pixels[pixelId * 3 + 2] = 0;
- }
-
- // Read 16x16 region from red backbuffer to PBO
- GLuint pbo;
- glGenBuffers(1, &pbo);
- glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo);
- glBufferData(GL_PIXEL_UNPACK_BUFFER, 3 * 16 * 16, pixels.data(), GL_STATIC_DRAW);
-
- // ANGLE internally uses RGBA as the DirectX format for RGB images
- // therefore glTexStorage2DEXT initializes the image to a default color to get a consistent
- // alpha color. The data is kept in a CPU-side image and the image is marked as dirty.
- glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGB8, 16, 16);
-
- // Initializes the color of the upper-left 8x8 pixels, leaves the other pixels untouched.
- // glTexSubImage2D should take into account that the image is dirty.
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 8, 8, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- setUpProgram();
-
- glUseProgram(mProgram);
- glUniform1i(mTexture2DUniformLocation, 0);
- drawQuad(mProgram, "position", 0.5f);
- glDeleteTextures(1, &tex2D);
- glDeleteBuffers(1, &pbo);
- EXPECT_GL_NO_ERROR();
- EXPECT_PIXEL_EQ(3 * width / 4, 3 * height / 4, 0, 0, 0, 255);
- EXPECT_PIXEL_EQ(width / 4, height / 4, 255, 0, 0, 255);
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_texture_storage"));
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_NV_pixel_buffer_object"));
}
+
+ const int width = getWindowWidth();
+ const int height = getWindowHeight();
+ const size_t pixelCount = width * height;
+ const int componentCount = 3;
+
+ GLuint tex2D;
+ glGenTextures(1, &tex2D);
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, tex2D);
+
+ // Fill with red
+ std::vector<GLubyte> pixels(componentCount * pixelCount);
+ for (size_t pixelId = 0; pixelId < pixelCount; ++pixelId)
+ {
+ pixels[pixelId * componentCount + 0] = 255;
+ pixels[pixelId * componentCount + 1] = 0;
+ pixels[pixelId * componentCount + 2] = 0;
+ }
+
+ // Read 16x16 region from red backbuffer to PBO
+ GLuint pbo;
+ glGenBuffers(1, &pbo);
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo);
+ glBufferData(GL_PIXEL_UNPACK_BUFFER, componentCount * pixelCount, pixels.data(),
+ GL_STATIC_DRAW);
+
+ // ANGLE internally uses RGBA as the DirectX format for RGB images
+ // therefore glTexStorage2DEXT initializes the image to a default color to get a consistent
+ // alpha color. The data is kept in a CPU-side image and the image is marked as dirty.
+ glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGB8, width, height);
+
+ // Initializes the color of the upper-left quadrant of pixels, leaves the other pixels
+ // untouched. glTexSubImage2D should take into account that the image is dirty.
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width / 2, height / 2, GL_RGB, GL_UNSIGNED_BYTE,
+ nullptr);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+ setUpProgram();
+
+ glUseProgram(mProgram);
+ glUniform1i(mTexture2DUniformLocation, 0);
+ drawQuad(mProgram, "position", 0.5f);
+ glDeleteTextures(1, &tex2D);
+ glDeleteBuffers(1, &pbo);
+ EXPECT_GL_NO_ERROR();
+ EXPECT_PIXEL_EQ(3 * width / 4, 3 * height / 4, 0, 0, 0, 255);
+ EXPECT_PIXEL_EQ(width / 4, height / 4, 255, 0, 0, 255);
+}
+
+// Test that glTexSubImage2D combined with a PBO works properly after deleting the PBO
+// and drawing with the texture
+// Pseudo code for the follow test:
+// 1. Upload PBO to mTexture2D
+// 2. Delete PBO
+// 3. Draw with otherTexture (x5)
+// 4. Draw with mTexture2D
+// 5. Validate color output
+TEST_P(Texture2DTest, PBOWithMultipleDraws)
+{
+ if (getClientMajorVersion() < 3)
+ {
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_texture_storage"));
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_NV_pixel_buffer_object"));
+ }
+
+ const GLuint width = getWindowWidth();
+ const GLuint height = getWindowHeight();
+ const GLuint windowPixelCount = width * height;
+ std::vector<GLColor> pixelsRed(windowPixelCount, GLColor::red);
+ std::vector<GLColor> pixelsGreen(windowPixelCount, GLColor::green);
+
+ // Create secondary draw that does not use mTexture
+ const char *vertexShaderSource = getVertexShaderSource();
+ const char *fragmentShaderSource = getFragmentShaderSource();
+ ANGLE_GL_PROGRAM(otherProgram, vertexShaderSource, fragmentShaderSource);
+
+ GLint uniformLoc = glGetUniformLocation(otherProgram, getTextureUniformName());
+ ASSERT_NE(-1, uniformLoc);
+ glUseProgram(0);
+
+ // Create secondary Texture to draw with
+ GLTexture otherTexture;
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, otherTexture);
+ glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8, width, height);
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE,
+ pixelsRed.data());
+ ASSERT_GL_NO_ERROR();
+
+ // Setup primary Texture
+ glBindTexture(GL_TEXTURE_2D, mTexture2D);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8, width, height);
+ ASSERT_GL_NO_ERROR();
+
+ // Setup PBO
+ GLuint pbo = 0;
+ glGenBuffers(1, &pbo);
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo);
+ glBufferData(GL_PIXEL_UNPACK_BUFFER, pixelsGreen.size() * 4u, pixelsGreen.data(),
+ GL_STATIC_DRAW);
+ ASSERT_GL_NO_ERROR();
+
+ // Write PBO to mTexture
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ ASSERT_GL_NO_ERROR();
+ // Delete PBO as ANGLE should be properly handling refcount of this buffer
+ glDeleteBuffers(1, &pbo);
+ pixelsGreen.clear();
+
+ // Do 5 draws not involving primary texture that the PBO updated
+ glUseProgram(otherProgram);
+ glUniform1i(uniformLoc, 0);
+ glBindTexture(GL_TEXTURE_2D, otherTexture);
+ drawQuad(otherProgram, "position", 0.5f);
+ glBindTexture(GL_TEXTURE_2D, 0);
+ glUseProgram(0);
+
+ glUseProgram(otherProgram);
+ glUniform1i(uniformLoc, 0);
+ glBindTexture(GL_TEXTURE_2D, otherTexture);
+ drawQuad(otherProgram, "position", 0.5f);
+ glBindTexture(GL_TEXTURE_2D, 0);
+ glUseProgram(0);
+
+ glUseProgram(otherProgram);
+ glUniform1i(uniformLoc, 0);
+ glBindTexture(GL_TEXTURE_2D, otherTexture);
+ drawQuad(otherProgram, "position", 0.5f);
+ glBindTexture(GL_TEXTURE_2D, 0);
+ glUseProgram(0);
+
+ glUseProgram(otherProgram);
+ glUniform1i(uniformLoc, 0);
+ glBindTexture(GL_TEXTURE_2D, otherTexture);
+ drawQuad(otherProgram, "position", 0.5f);
+ glBindTexture(GL_TEXTURE_2D, 0);
+ glUseProgram(0);
+ ASSERT_GL_NO_ERROR();
+
+ std::vector<GLColor> output(windowPixelCount, GLColor::black);
+ glReadPixels(0, 0, getWindowWidth(), getWindowHeight(), GL_RGBA, GL_UNSIGNED_BYTE,
+ output.data());
+ EXPECT_EQ(pixelsRed, output);
+
+ setUpProgram();
+ // Draw using PBO updated texture
+ glUseProgram(mProgram);
+ glUniform1i(mTexture2DUniformLocation, 0);
+ glBindTexture(GL_TEXTURE_2D, mTexture2D);
+ drawQuad(mProgram, "position", 0.5f);
+ ASSERT_GL_NO_ERROR();
+
+ std::vector<GLColor> actual(windowPixelCount, GLColor::black);
+ glReadPixels(0, 0, getWindowWidth(), getWindowHeight(), GL_RGBA, GL_UNSIGNED_BYTE,
+ actual.data());
+ // Value should be green as it was updated during PBO transfer to mTexture
+ std::vector<GLColor> expected(windowPixelCount, GLColor::green);
+ EXPECT_EQ(expected, actual);
}
// Tests CopySubImage for float formats
@@ -2017,8 +2193,8 @@
// TODO(geofflang): Investigate on D3D11. http://anglebug.com/2291
ANGLE_SKIP_TEST_IF(IsD3D11());
- // TODO(cnorthrop): Framebuffer level support. http://anglebug.com/3184
- ANGLE_SKIP_TEST_IF(IsVulkan());
+ // TODO(cnorthrop): Failing on Vulkan/Windows/AMD. http://anglebug.com/3996
+ ANGLE_SKIP_TEST_IF(IsVulkan() && IsWindows() && IsAMD());
setUpProgram();
@@ -2677,9 +2853,6 @@
// samplerCubeShadow: TextureCube + SamplerComparisonState
TEST_P(SamplerTypeMixTestES3, SamplerTypeMixDraw)
{
- // TODO(cnorthrop): Requires non-color staging buffer support. http://anglebug.com/3949
- ANGLE_SKIP_TEST_IF(IsVulkan());
-
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, mTexture2D);
GLubyte texData[4];
@@ -2715,6 +2888,8 @@
glTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, 0, 0, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT,
depthTexData);
+ // http://anglebug.com/3949: TODO: Add a DS texture case
+
EXPECT_GL_NO_ERROR();
glUseProgram(mProgram);
@@ -4000,10 +4175,9 @@
drawQuad(mProgram, "position", 0.5f);
- GLubyte expectedValue = static_cast<GLubyte>(pixelValue >> 8);
- EXPECT_PIXEL_COLOR_EQ(0, 0,
- SliceFormatColor(format, GLColor(expectedValue, expectedValue,
- expectedValue, expectedValue)));
+ EXPECT_PIXEL_16UI_COLOR(0, 0,
+ SliceFormatColor16UI(format, GLColor16UI(pixelValue, pixelValue,
+ pixelValue, pixelValue)));
glBindRenderbuffer(GL_RENDERBUFFER, mRenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, internalformat, 1, 1);
@@ -4015,13 +4189,20 @@
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
+ EXPECT_PIXEL_16UI_COLOR(
+ 0, 0, SliceFormatColor16UI(format, GLColor16UI(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF)));
+
+ glBindTexture(GL_TEXTURE_2D, mTextures[1]);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1);
- EXPECT_PIXEL_COLOR_EQ(0, 0, SliceFormatColor(format, GLColor::white));
-
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mTextures[1],
+ 0);
+ EXPECT_PIXEL_16UI_COLOR(
+ 0, 0, SliceFormatColor16UI(format, GLColor16UI(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF)));
ASSERT_GL_NO_ERROR();
+
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
}
GLuint mTextures[3];
@@ -4032,6 +4213,12 @@
// Test texture formats enabled by the GL_EXT_texture_norm16 extension.
TEST_P(Texture2DNorm16TestES3, TextureNorm16Test)
{
+ // TODO(crbug.com/angleproject/4089) Fails on Nexus5X Adreno
+ // TODO(crbug.com/1024387) Fails on Nexus6P
+ ANGLE_SKIP_TEST_IF(IsNexus5X() || IsNexus6P());
+ // TODO(crbug.com/angleproject/4089) Fails on Win Intel OpenGL driver
+ ANGLE_SKIP_TEST_IF(IsIntel() && IsOpenGL());
+
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_texture_norm16"));
testNorm16Texture(GL_R16_EXT, GL_RED, GL_UNSIGNED_SHORT);
@@ -4043,8 +4230,6 @@
testNorm16Texture(GL_RGB16_SNORM_EXT, GL_RGB, GL_SHORT);
testNorm16Texture(GL_RGBA16_SNORM_EXT, GL_RGBA, GL_SHORT);
- testNorm16Render(GL_R16_EXT, GL_RED, GL_UNSIGNED_SHORT);
- testNorm16Render(GL_RG16_EXT, GL_RG, GL_UNSIGNED_SHORT);
testNorm16Render(GL_RGBA16_EXT, GL_RGBA, GL_UNSIGNED_SHORT);
}
@@ -4598,6 +4783,8 @@
// Test color-renderability for ES3 float and half float textures
TEST_P(Texture2DFloatTestES3, TextureFloatRenderTest)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsD3D9());
// EXT_color_buffer_float covers float, half float, and 11-11-10 float formats
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_color_buffer_float"));
@@ -4620,6 +4807,8 @@
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_color_buffer_half_float"));
// https://crbug.com/1003971
ANGLE_SKIP_TEST_IF(IsOzone());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsD3D9());
bool atLeastOneSupported = false;
@@ -4977,6 +5166,10 @@
{
ANGLE_SKIP_TEST_IF(IsD3D11());
ANGLE_SKIP_TEST_IF(IsIntel() && IsD3D9());
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_ANGLE_depth_texture") &&
+ !IsGLExtensionEnabled("GL_OES_depth_texture"));
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsOpenGL() || IsOpenGLES());
// When the depth texture is specified with unsized internalformat implementations follow
// OES_depth_texture behavior. Otherwise they follow GLES 3.0 behavior.
@@ -5635,152 +5828,103 @@
EXPECT_PIXEL_COLOR_EQ(width - 1, height - 1, color);
}
+// Test that uses glCompressedTexSubImage2D combined with a PBO
+TEST_P(PBOCompressedTextureTest, PBOCompressedSubImage)
+{
+ // ETC texture formats are not supported on Mac OpenGL. http://anglebug.com/3853
+ ANGLE_SKIP_TEST_IF(IsOSX() && IsDesktopOpenGL());
+ // http://anglebug.com/4115
+ ANGLE_SKIP_TEST_IF(IsAMD() && IsWindows() && IsDesktopOpenGL());
+ ANGLE_SKIP_TEST_IF(IsIntel() && IsWindows() && IsDesktopOpenGL());
+
+ if (getClientMajorVersion() < 3)
+ {
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_texture_storage"));
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_NV_pixel_buffer_object"));
+ ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_compressed_ETC2_RGB8_texture"));
+ }
+
+ const GLuint width = 4u;
+ const GLuint height = 4u;
+
+ setWindowWidth(width);
+ setWindowHeight(height);
+
+ // Setup primary Texture
+ glBindTexture(GL_TEXTURE_2D, mTexture2D);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+
+ if (getClientMajorVersion() < 3)
+ {
+ glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_COMPRESSED_RGB8_ETC2, width, height);
+ }
+ else
+ {
+ glTexStorage2D(GL_TEXTURE_2D, 1, GL_COMPRESSED_RGB8_ETC2, width, height);
+ }
+ ASSERT_GL_NO_ERROR();
+
+ // Setup PBO and fill it with a red
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, mPBO);
+ glBufferData(GL_PIXEL_UNPACK_BUFFER, width * height / 2u, kCompressedImageETC2, GL_STATIC_DRAW);
+ ASSERT_GL_NO_ERROR();
+
+ // Write PBO to mTexture
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_COMPRESSED_RGB8_ETC2,
+ width * height / 2u, nullptr);
+ ASSERT_GL_NO_ERROR();
+
+ setUpProgram();
+ // Draw using PBO updated texture
+ glUseProgram(mProgram);
+ glUniform1i(mTexture2DUniformLocation, 0);
+ glBindTexture(GL_TEXTURE_2D, mTexture2D);
+ drawQuad(mProgram, "position", 0.5f);
+ ASSERT_GL_NO_ERROR();
+
+ EXPECT_PIXEL_COLOR_EQ(getWindowWidth() / 2, getWindowHeight() / 2, GLColor::red);
+ ASSERT_GL_NO_ERROR();
+}
+
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(Texture2DTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureCubeTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DTestWithDrawScale,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(Sampler2DAsFunctionParameterTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(SamplerArrayTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(SamplerArrayAsFunctionParameterTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture3DTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DIntegerAlpha1TestES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DUnsignedIntegerAlpha1TestES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(ShadowSamplerPlusSampler3DTestES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(SamplerTypeMixTestES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DArrayTestES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureSizeTextureArrayTest, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(SamplerInStructTest,
- ES2_D3D11(),
- ES2_D3D9(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(SamplerInStructAsFunctionParameterTest,
- ES2_D3D11(),
- ES2_D3D9(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(SamplerInStructArrayAsFunctionParameterTest,
- ES2_D3D11(),
- ES2_D3D9(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(SamplerInNestedStructAsFunctionParameterTest,
- ES2_D3D11(),
- ES2_D3D9(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(SamplerInStructAndOtherVariableTest,
- ES2_D3D11(),
- ES2_D3D9(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureAnisotropyTest,
- ES2_D3D11(),
- ES2_D3D9(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureBorderClampTest,
- ES2_D3D11(),
- ES2_D3D9(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureBorderClampTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(TextureBorderClampIntegerTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(TextureLimitsTest, ES2_D3D11(), ES2_OPENGL(), ES2_OPENGLES(), ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DNorm16TestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(Texture2DRGTest,
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DFloatTestES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DFloatTestES2,
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureCubeTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DIntegerTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureCubeIntegerTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureCubeIntegerEdgeTestES3, ES3_D3D11(), ES3_OPENGL());
-ANGLE_INSTANTIATE_TEST(Texture2DIntegerProjectiveOffsetTestES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DArrayIntegerTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture3DIntegerTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DDepthTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2(Texture2DTest);
+ANGLE_INSTANTIATE_TEST_ES2(TextureCubeTest);
+ANGLE_INSTANTIATE_TEST_ES2(Texture2DTestWithDrawScale);
+ANGLE_INSTANTIATE_TEST_ES2(Sampler2DAsFunctionParameterTest);
+ANGLE_INSTANTIATE_TEST_ES2(SamplerArrayTest);
+ANGLE_INSTANTIATE_TEST_ES2(SamplerArrayAsFunctionParameterTest);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(Texture3DTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DIntegerAlpha1TestES3);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DUnsignedIntegerAlpha1TestES3);
+ANGLE_INSTANTIATE_TEST_ES3(ShadowSamplerPlusSampler3DTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(SamplerTypeMixTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DArrayTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(TextureSizeTextureArrayTest);
+ANGLE_INSTANTIATE_TEST_ES2(SamplerInStructTest);
+ANGLE_INSTANTIATE_TEST_ES2(SamplerInStructAsFunctionParameterTest);
+ANGLE_INSTANTIATE_TEST_ES2(SamplerInStructArrayAsFunctionParameterTest);
+ANGLE_INSTANTIATE_TEST_ES2(SamplerInNestedStructAsFunctionParameterTest);
+ANGLE_INSTANTIATE_TEST_ES2(SamplerInStructAndOtherVariableTest);
+ANGLE_INSTANTIATE_TEST_ES2(TextureAnisotropyTest);
+ANGLE_INSTANTIATE_TEST_ES2(TextureBorderClampTest);
+ANGLE_INSTANTIATE_TEST_ES3(TextureBorderClampTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(TextureBorderClampIntegerTestES3);
+ANGLE_INSTANTIATE_TEST_ES2(TextureLimitsTest);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DNorm16TestES3);
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(Texture2DRGTest);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DFloatTestES3);
+ANGLE_INSTANTIATE_TEST_ES2(Texture2DFloatTestES2);
+ANGLE_INSTANTIATE_TEST_ES3(TextureCubeTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DIntegerTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(TextureCubeIntegerTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(TextureCubeIntegerEdgeTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DIntegerProjectiveOffsetTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(Texture2DArrayIntegerTestES3);
+ANGLE_INSTANTIATE_TEST_ES3(Texture3DIntegerTestES3);
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(Texture2DDepthTest);
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(PBOCompressedTextureTest);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureUploadFormatTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureUploadFormatTest.cpp
index 32c0081..623c6b8 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureUploadFormatTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureUploadFormatTest.cpp
@@ -608,11 +608,4 @@
EXPECT_GL_NO_ERROR();
}
-ANGLE_INSTANTIATE_TEST(TextureUploadFormatTest,
- ES3_D3D11(),
- ES2_D3D9(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(TextureUploadFormatTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TimerQueriesTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TimerQueriesTest.cpp
index 8caeb64..ad8198b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TimerQueriesTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TimerQueriesTest.cpp
@@ -478,6 +478,8 @@
TEST_P(TimerQueriesTestES3, TimestampGetInteger64)
{
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_disjoint_timer_query"));
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsAndroid());
GLint queryTimestampBits = 0;
glGetQueryivEXT(GL_TIMESTAMP_EXT, GL_QUERY_COUNTER_BITS_EXT, &queryTimestampBits);
@@ -502,12 +504,6 @@
EXPECT_LT(result1, result2);
}
-ANGLE_INSTANTIATE_TEST(TimerQueriesTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(TimerQueriesTest);
-ANGLE_INSTANTIATE_TEST(TimerQueriesTestES3, ES3_D3D11(), ES3_OPENGL());
+ANGLE_INSTANTIATE_TEST_ES3(TimerQueriesTestES3);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TransformFeedbackTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TransformFeedbackTest.cpp
index 427e6dc..876e1f5 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TransformFeedbackTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TransformFeedbackTest.cpp
@@ -1644,16 +1644,8 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(TransformFeedbackTest,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(TransformFeedbackLifetimeTest,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(TransformFeedbackTestES31, ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3(TransformFeedbackTest);
+ANGLE_INSTANTIATE_TEST_ES3(TransformFeedbackLifetimeTest);
+ANGLE_INSTANTIATE_TEST_ES31(TransformFeedbackTestES31);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformBufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformBufferTest.cpp
index 85b54c2..0549f2f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformBufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformBufferTest.cpp
@@ -1598,11 +1598,7 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(UniformBufferTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(UniformBufferTest31,
- ES31_D3D11(),
- ES31_OPENGL(),
- ES31_OPENGLES(),
- ES31_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(UniformBufferTest);
+ANGLE_INSTANTIATE_TEST_ES31(UniformBufferTest31);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformTest.cpp
index 72e8778..aaf289f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformTest.cpp
@@ -1410,24 +1410,9 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(SimpleUniformTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(UniformTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(UniformTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(UniformTestES31, ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(SimpleUniformTest);
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(UniformTest);
+ANGLE_INSTANTIATE_TEST_ES3(UniformTestES3);
+ANGLE_INSTANTIATE_TEST_ES31(UniformTestES31);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackAlignmentTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackAlignmentTest.cpp
index 698f1c0..28d2847 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackAlignmentTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackAlignmentTest.cpp
@@ -297,13 +297,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(UnpackAlignmentTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_VULKAN(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(UnpackAlignmentTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackRowLength.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackRowLength.cpp
index a5168ff..c354fdc 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackRowLength.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackRowLength.cpp
@@ -99,14 +99,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(UnpackRowLengthTest,
- ES3_D3D11(),
- ES2_D3D11(),
- ES2_D3D9(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(UnpackRowLengthTest);
} // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp
index 43b309e..6078dbb 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp
@@ -1203,6 +1203,9 @@
// Verify that using a different start vertex doesn't mess up the draw.
TEST_P(VertexAttributeTest, DrawArraysWithBufferOffset)
{
+ // anglebug.com/4163
+ ANGLE_SKIP_TEST_IF(IsD3D11() && IsNVIDIA() && IsWindows7());
+
// TODO(jmadill): Diagnose this failure.
ANGLE_SKIP_TEST_IF(IsD3D11_FL93());
@@ -2409,41 +2412,14 @@
// tests should be run against.
// D3D11 Feature Level 9_3 uses different D3D formats for vertex attribs compared to Feature Levels
// 10_0+, so we should test them separately.
-ANGLE_INSTANTIATE_TEST(VertexAttributeTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(VertexAttributeTest);
-ANGLE_INSTANTIATE_TEST(VertexAttributeOORTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(VertexAttributeOORTest);
-ANGLE_INSTANTIATE_TEST(VertexAttributeTestES3,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES3(VertexAttributeTestES3);
-ANGLE_INSTANTIATE_TEST(VertexAttributeTestES31,
- ES31_D3D11(),
- ES31_OPENGL(),
- ES31_OPENGLES(),
- ES31_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES31(VertexAttributeTestES31);
-ANGLE_INSTANTIATE_TEST(VertexAttributeCachingTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(VertexAttributeCachingTest);
} // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/VulkanExternalImageTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/VulkanExternalImageTest.cpp
index 96e093b..18a37b1 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/VulkanExternalImageTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/VulkanExternalImageTest.cpp
@@ -57,6 +57,8 @@
// glImportMemoryFdEXT must be able to import a valid opaque fd.
TEST_P(VulkanExternalImageTest, ShouldImportMemoryOpaqueFd)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
VulkanExternalHelper helper;
@@ -93,6 +95,8 @@
// glImportSemaphoreFdEXT must be able to import a valid opaque fd.
TEST_P(VulkanExternalImageTest, ShouldImportSemaphoreOpaqueFd)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
VulkanExternalHelper helper;
@@ -122,6 +126,8 @@
// Test creating and clearing a simple RGBA8 texture in a opaque fd.
TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdRGBA8)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(isSwiftshader());
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
VulkanExternalHelper helper;
@@ -171,14 +177,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(VulkanExternalImageTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(VulkanExternalImageTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLCompatibilityTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLCompatibilityTest.cpp
index ebcc74f..b451087 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLCompatibilityTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLCompatibilityTest.cpp
@@ -584,6 +584,17 @@
glRequestExtensionANGLE("GL_NV_pixel_buffer_object");
EXPECT_GL_NO_ERROR();
+ // Create a framebuffer to read from
+ GLRenderbuffer renderbuffer;
+ glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA4, 1, 1);
+
+ GLFramebuffer fbo;
+ glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
+ renderbuffer);
+ EXPECT_GL_NO_ERROR();
+
glBindBuffer(GL_PIXEL_PACK_BUFFER, buffer);
EXPECT_GL_NO_ERROR();
@@ -984,6 +995,14 @@
glTexImage2D(GL_TEXTURE_RECTANGLE_ANGLE, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE,
nullptr);
EXPECT_GL_NO_ERROR();
+
+ glDisableExtensionANGLE("GL_ANGLE_texture_rectangle");
+ EXPECT_GL_NO_ERROR();
+
+ EXPECT_FALSE(IsGLExtensionEnabled("GL_ANGLE_texture_rectangle"));
+
+ glBindTexture(GL_TEXTURE_RECTANGLE_ANGLE, texture);
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
}
}
@@ -3588,7 +3607,7 @@
FillTexture2D(tex0.get(), width, height, GLColor::black, 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE);
FillTexture2D(tex1.get(), width, height, 0x80, 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT,
GL_UNSIGNED_INT);
- FillTexture2D(tex2.get(), width, height, 0x40, 0, GL_DEPTH_STENCIL, GL_DEPTH_STENCIL,
+ FillTexture2D(tex2.get(), width, height, 0x40, 0, GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL,
GL_UNSIGNED_INT_24_8);
ASSERT_GL_NO_ERROR();
@@ -3650,6 +3669,8 @@
// But the level of the 3D texture != the level of the read attachment.
TEST_P(WebGL2CompatibilityTest, NoTextureCopyingFeedbackLoopBetween3DLevels)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
GLTexture texture;
GLFramebuffer framebuffer;
@@ -3669,6 +3690,8 @@
// But the zoffset of the 3D texture != the layer of the read attachment.
TEST_P(WebGL2CompatibilityTest, NoTextureCopyingFeedbackLoopBetween3DLayers)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan());
GLTexture texture;
GLFramebuffer framebuffer;
@@ -4623,16 +4646,7 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(WebGLCompatibilityTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN(),
- ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(WebGLCompatibilityTest);
-ANGLE_INSTANTIATE_TEST(WebGL2CompatibilityTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES3(WebGL2CompatibilityTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLFramebufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLFramebufferTest.cpp
index a99232e..b50c4ad 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLFramebufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLFramebufferTest.cpp
@@ -901,14 +901,6 @@
}
// Only run against WebGL 1 validation, since much was changed in 2.
-ANGLE_INSTANTIATE_TEST(WebGLFramebufferTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES2_OPENGL(),
- ES2_OPENGLES(),
- ES3_D3D11(),
- ES3_OPENGL(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(WebGLFramebufferTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLReadOutsideFramebufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLReadOutsideFramebufferTest.cpp
index db8c613..b35722d 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLReadOutsideFramebufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLReadOutsideFramebufferTest.cpp
@@ -362,6 +362,8 @@
// Check that copyTexImage2D sets (0,0,0,0) for pixels outside the framebuffer.
TEST_P(WebGLReadOutsideFramebufferTest, CopyTexImage2D)
{
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan() || IsD3D9() || IsD3D11());
Main2D(&WebGLReadOutsideFramebufferTest::TestCopyTexImage2D, true);
// TODO(fjhenigman): Figure out this failure.
@@ -375,25 +377,19 @@
// the corresponding source pixel is outside the framebuffer.
TEST_P(WebGL2ReadOutsideFramebufferTest, CopyTexSubImage3D)
{
+ // TODO(hqle): Metal doesn't implement 3D texture yet.
+ // http://anglebug.com/4136 (ES2 renderer is mistakenly included in this test)
+ ANGLE_SKIP_TEST_IF(IsMetal());
+ // http://anglebug.com/4092
+ ANGLE_SKIP_TEST_IF(IsVulkan() || IsD3D9() || IsD3D11());
// Robust CopyTexSubImage3D behaviour is not implemented on OpenGL.
ANGLE_SKIP_TEST_IF(IsDesktopOpenGL() || IsOpenGLES());
Main3D(&WebGLReadOutsideFramebufferTest::TestCopyTexSubImage3D, false);
}
-ANGLE_INSTANTIATE_TEST(WebGLReadOutsideFramebufferTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(WebGLReadOutsideFramebufferTest);
-ANGLE_INSTANTIATE_TEST(WebGL2ReadOutsideFramebufferTest,
- ES3_D3D11(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(WebGL2ReadOutsideFramebufferTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/AlphaFuncTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/AlphaFuncTest.cpp
index 82ed1d0..0b9e7c9 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/AlphaFuncTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/AlphaFuncTest.cpp
@@ -93,4 +93,4 @@
EXPECT_EQ(std::numeric_limits<GLint>::max(), alphaTestVal);
}
-ANGLE_INSTANTIATE_TEST(AlphaFuncTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(AlphaFuncTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/BasicDrawTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/BasicDrawTest.cpp
index c296df0..509b23b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/BasicDrawTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/BasicDrawTest.cpp
@@ -80,4 +80,4 @@
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
}
-ANGLE_INSTANTIATE_TEST(BasicDrawTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(BasicDrawTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClientActiveTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClientActiveTextureTest.cpp
index 8082d07..34a6375 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClientActiveTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClientActiveTextureTest.cpp
@@ -77,8 +77,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(ClientActiveTextureTest,
- ES1_D3D11(),
- ES1_OPENGL(),
- ES1_OPENGLES(),
- ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(ClientActiveTextureTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClientStateEnable.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClientStateEnable.cpp
index 0413d3d..b2bbf54 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClientStateEnable.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClientStateEnable.cpp
@@ -89,4 +89,4 @@
EXPECT_GL_FALSE(glIsEnabled(GL_TEXTURE_COORD_ARRAY));
}
-ANGLE_INSTANTIATE_TEST(ClientStateEnable, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(ClientStateEnable);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClipPlaneTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClipPlaneTest.cpp
index 0731834..6218039 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClipPlaneTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ClipPlaneTest.cpp
@@ -116,4 +116,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(ClipPlaneTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(ClipPlaneTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentColorTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentColorTest.cpp
index a40ead2..230740d 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentColorTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentColorTest.cpp
@@ -75,4 +75,4 @@
EXPECT_NEAR(1.0f / 3.0f, floatColor.A, epsilon);
}
-ANGLE_INSTANTIATE_TEST(CurrentColorTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(CurrentColorTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentNormalTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentNormalTest.cpp
index 6a35dfc..1bce4d8 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentNormalTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentNormalTest.cpp
@@ -66,4 +66,4 @@
EXPECT_NEAR(1.0f / 3.0f, actualNormal[2], epsilon);
}
-ANGLE_INSTANTIATE_TEST(CurrentNormalTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(CurrentNormalTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentTextureCoordsTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentTextureCoordsTest.cpp
index 5ad1953..0d4ff20 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentTextureCoordsTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/CurrentTextureCoordsTest.cpp
@@ -96,8 +96,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(CurrentTextureCoordsTest,
- ES1_D3D11(),
- ES1_OPENGL(),
- ES1_OPENGLES(),
- ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(CurrentTextureCoordsTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/DrawTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/DrawTextureTest.cpp
index 22f3c53..21d696a 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/DrawTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/DrawTextureTest.cpp
@@ -133,4 +133,4 @@
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
}
-ANGLE_INSTANTIATE_TEST(DrawTextureTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(DrawTextureTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/FogTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/FogTest.cpp
index 10494ad..26ba9d3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/FogTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/FogTest.cpp
@@ -130,4 +130,4 @@
EXPECT_EQ(0.4f, fogValue[3]);
}
-ANGLE_INSTANTIATE_TEST(FogTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(FogTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/LightsTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/LightsTest.cpp
index 6752e3b..d413088 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/LightsTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/LightsTest.cpp
@@ -314,4 +314,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(LightsTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(LightsTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MaterialsTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MaterialsTest.cpp
index fcebff6..717c237 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MaterialsTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MaterialsTest.cpp
@@ -128,4 +128,4 @@
EXPECT_EQ(kShininessTestValue, actualShininess);
}
-ANGLE_INSTANTIATE_TEST(MaterialsTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(MaterialsTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixBuiltinsTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixBuiltinsTest.cpp
index 1964688..a0357d7 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixBuiltinsTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixBuiltinsTest.cpp
@@ -173,4 +173,4 @@
EXPECT_GL_ERROR(GL_INVALID_VALUE);
}
-ANGLE_INSTANTIATE_TEST(MatrixBuiltinsTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(MatrixBuiltinsTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixLoadTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixLoadTest.cpp
index 8f09be8..aa020bb 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixLoadTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixLoadTest.cpp
@@ -102,4 +102,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(MatrixLoadTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(MatrixLoadTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixModeTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixModeTest.cpp
index 3a3bb90..0b1b2fc 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixModeTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixModeTest.cpp
@@ -62,4 +62,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(MatrixModeTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(MatrixModeTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixMultTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixMultTest.cpp
index 99817f8..45b3ca6 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixMultTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixMultTest.cpp
@@ -74,4 +74,4 @@
EXPECT_EQ(angle::Mat4(), outputMatrix);
}
-ANGLE_INSTANTIATE_TEST(MatrixMultTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(MatrixMultTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixStackTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixStackTest.cpp
index 52c86b3..771d554 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixStackTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixStackTest.cpp
@@ -112,4 +112,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(MatrixStackTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(MatrixStackTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/PointParameterTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/PointParameterTest.cpp
index 45cdf70..14e5ba6 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/PointParameterTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/PointParameterTest.cpp
@@ -153,4 +153,4 @@
EXPECT_EQ(3.0f, params[2]);
}
-ANGLE_INSTANTIATE_TEST(PointParameterTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(PointParameterTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/PointSpriteTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/PointSpriteTest.cpp
index fbac388..49da7cd 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/PointSpriteTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/PointSpriteTest.cpp
@@ -84,4 +84,4 @@
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
}
-ANGLE_INSTANTIATE_TEST(PointSpriteTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(PointSpriteTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ShadeModelTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ShadeModelTest.cpp
index c45803c..3130a81 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ShadeModelTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/ShadeModelTest.cpp
@@ -68,4 +68,4 @@
EXPECT_GLENUM_EQ(GL_SMOOTH, shadeModel);
}
-ANGLE_INSTANTIATE_TEST(ShadeModelTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(ShadeModelTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureEnvTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureEnvTest.cpp
index 4aa63af..cb6c0d5 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureEnvTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureEnvTest.cpp
@@ -372,4 +372,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(TextureEnvTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(TextureEnvTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureParameterTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureParameterTest.cpp
index a629eae..cc666f9 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureParameterTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureParameterTest.cpp
@@ -111,8 +111,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(TextureParameterTest,
- ES1_D3D11(),
- ES1_OPENGL(),
- ES1_OPENGLES(),
- ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(TextureParameterTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureTargetEnableTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureTargetEnableTest.cpp
index 71f26c7..fa7dc75 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureTargetEnableTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureTargetEnableTest.cpp
@@ -76,8 +76,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(TextureTargetEnableTest,
- ES1_D3D11(),
- ES1_OPENGL(),
- ES1_OPENGLES(),
- ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(TextureTargetEnableTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/VertexPointerTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/VertexPointerTest.cpp
index f62c708..10a7dbd 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/VertexPointerTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/VertexPointerTest.cpp
@@ -64,4 +64,4 @@
}
}
-ANGLE_INSTANTIATE_TEST(VertexPointerTest, ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES1(VertexPointerTest);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/ConformanceTests.cpp b/Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/ConformanceTests.cpp
index 587b2dd..12b3e28 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/ConformanceTests.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/ConformanceTests.cpp
@@ -348,8 +348,6 @@
TEST_P(GLES1ConformanceTest, Scissor)
{
- // http://g.co/anglebug/3867
- ANGLE_SKIP_TEST_IF(IsVulkan() && IsWindows() && IsIntel());
ASSERT_NE(CONFORMANCE_TEST_ERROR, ScissorExec());
}
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/MultiviewPerf.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/MultiviewPerf.cpp
index e3f15e7..6db5f19 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/MultiviewPerf.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/MultiviewPerf.cpp
@@ -421,7 +421,7 @@
" frag_Col3 = vert_Col3;\n"
" frag_Col4 = vert_Col4;\n"
" frag_Col5 = vert_Col5;\n"
- " gl_Position = vPosition;\n"
+ " gl_Position = vPosition;\n"
"}\n";
const std::string &fs =
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/TextureUploadPerf.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/TextureUploadPerf.cpp
index 7bbf7aa..1e5f3a5 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/TextureUploadPerf.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/TextureUploadPerf.cpp
@@ -109,6 +109,69 @@
void drawBenchmark() override;
};
+class PBOSubImageBenchmark : public TextureUploadBenchmarkBase
+{
+ public:
+ PBOSubImageBenchmark() : TextureUploadBenchmarkBase("PBO") {}
+
+ void initializeBenchmark() override
+ {
+ TextureUploadBenchmarkBase::initializeBenchmark();
+
+ const auto ¶ms = GetParam();
+
+ glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8, params.baseSize, params.baseSize);
+
+ glGenBuffers(1, &mPBO);
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, mPBO);
+ glBufferData(GL_PIXEL_UNPACK_BUFFER, params.baseSize * params.baseSize * 4,
+ mTextureData.data(), GL_STREAM_DRAW);
+ }
+
+ void destroyBenchmark()
+ {
+ TextureUploadBenchmarkBase::destroyBenchmark();
+ glDeleteBuffers(1, &mPBO);
+ }
+
+ void drawBenchmark() override;
+
+ private:
+ GLuint mPBO;
+};
+
+class PBOCompressedSubImageBenchmark : public TextureUploadBenchmarkBase
+{
+ public:
+ PBOCompressedSubImageBenchmark() : TextureUploadBenchmarkBase("PBOCompressed") {}
+
+ void initializeBenchmark() override
+ {
+ TextureUploadBenchmarkBase::initializeBenchmark();
+
+ const auto ¶ms = GetParam();
+
+ glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_COMPRESSED_RGB8_ETC2, params.baseSize,
+ params.baseSize);
+
+ glGenBuffers(1, &mPBO);
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, mPBO);
+ glBufferData(GL_PIXEL_UNPACK_BUFFER, params.subImageSize * params.subImageSize / 2,
+ mTextureData.data(), GL_STREAM_DRAW);
+ }
+
+ void destroyBenchmark()
+ {
+ TextureUploadBenchmarkBase::destroyBenchmark();
+ glDeleteBuffers(1, &mPBO);
+ }
+
+ void drawBenchmark() override;
+
+ private:
+ GLuint mPBO;
+};
+
TextureUploadBenchmarkBase::TextureUploadBenchmarkBase(const char *benchmarkName)
: ANGLERenderTest(benchmarkName, GetParam())
{
@@ -228,6 +291,46 @@
ASSERT_GL_NO_ERROR();
}
+void PBOSubImageBenchmark::drawBenchmark()
+{
+ const auto ¶ms = GetParam();
+
+ startGpuTimer();
+ for (unsigned int iteration = 0; iteration < params.iterationsPerStep; ++iteration)
+ {
+ glTexSubImage2D(GL_TEXTURE_2D, 0, rand() % (params.baseSize - params.subImageSize),
+ rand() % (params.baseSize - params.subImageSize), params.subImageSize,
+ params.subImageSize, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+
+ // Perform a draw just so the texture data is flushed. With the position attributes not
+ // set, a constant default value is used, resulting in a very cheap draw.
+ glDrawArrays(GL_TRIANGLES, 0, 3);
+ }
+ stopGpuTimer();
+
+ ASSERT_GL_NO_ERROR();
+}
+
+void PBOCompressedSubImageBenchmark::drawBenchmark()
+{
+ const auto ¶ms = GetParam();
+
+ startGpuTimer();
+ for (unsigned int iteration = 0; iteration < params.iterationsPerStep; ++iteration)
+ {
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, params.subImageSize, params.subImageSize,
+ GL_COMPRESSED_RGB8_ETC2,
+ params.subImageSize * params.subImageSize / 2, 0);
+
+ // Perform a draw just so the texture data is flushed. With the position attributes not
+ // set, a constant default value is used, resulting in a very cheap draw.
+ glDrawArrays(GL_TRIANGLES, 0, 3);
+ }
+ stopGpuTimer();
+
+ ASSERT_GL_NO_ERROR();
+}
+
TextureUploadParams D3D11Params(bool webglCompat)
{
TextureUploadParams params;
@@ -252,6 +355,30 @@
return params;
}
+TextureUploadParams VulkanPBOParams(GLsizei baseSize, GLsizei subImageSize)
+{
+ TextureUploadParams params;
+ params.eglParameters = egl_platform::VULKAN();
+ params.webgl = false;
+ params.trackGpuTime = false;
+ params.baseSize = baseSize;
+ params.subImageSize = subImageSize;
+ return params;
+}
+
+TextureUploadParams ES3OpenGLPBOParams(GLsizei baseSize, GLsizei subImageSize)
+{
+ TextureUploadParams params;
+ params.eglParameters = egl_platform::OPENGL();
+ params.majorVersion = 3;
+ params.minorVersion = 0;
+ params.webgl = false;
+ params.trackGpuTime = false;
+ params.baseSize = baseSize;
+ params.subImageSize = subImageSize;
+ return params;
+}
+
} // anonymous namespace
TEST_P(TextureUploadSubImageBenchmark, Run)
@@ -264,6 +391,16 @@
run();
}
+TEST_P(PBOSubImageBenchmark, Run)
+{
+ run();
+}
+
+TEST_P(PBOCompressedSubImageBenchmark, Run)
+{
+ run();
+}
+
using namespace params;
ANGLE_INSTANTIATE_TEST(TextureUploadSubImageBenchmark,
@@ -283,3 +420,11 @@
VulkanParams(false),
NullDevice(VulkanParams(false)),
VulkanParams(true));
+
+ANGLE_INSTANTIATE_TEST(PBOSubImageBenchmark,
+ ES3OpenGLPBOParams(1024, 128),
+ VulkanPBOParams(1024, 128));
+
+ANGLE_INSTANTIATE_TEST(PBOCompressedSubImageBenchmark,
+ ES3OpenGLPBOParams(128, 128),
+ VulkanPBOParams(128, 128));
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp
index 2d5e463..174fcc6 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp
@@ -151,10 +151,9 @@
}
args.push_back(nullptr);
- std::string output;
- int exitCode;
-
- bool success = RunApp(args, &output, nullptr, &exitCode);
+ ProcessHandle process(args, true, false);
+ ASSERT_TRUE(process && process->started());
+ ASSERT_TRUE(process->finish());
// Restore the current working directory for the next tests.
if (cwd.valid())
@@ -162,11 +161,11 @@
SetCWD(cwd.value().c_str());
}
- ASSERT_TRUE(success);
- ASSERT_EQ(EXIT_SUCCESS, exitCode);
+ ASSERT_EQ(EXIT_SUCCESS, process->getExitCode());
if (!OneFrame())
{
+ std::string output = process->getStdout();
parseOutput(output, benchmarkName, completeRun);
}
}
diff --git a/Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/extension_test.cpp b/Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/extension_test.cpp
index f253778..772cd7e 100644
--- a/Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/extension_test.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/extension_test.cpp
@@ -74,8 +74,12 @@
const char *expected = "int baz = 1;\n\n";
using testing::_;
- // Expect an error about extension pragmas after non-preprocessor tokens.
- EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL, _, _));
+#if defined(ANGLE_PLATFORM_CHROMEOS)
+ // Directive successfully parsed.
+ EXPECT_CALL(mDirectiveHandler, handleExtension(pp::SourceLocation(0, 2), "foo", "bar"));
+#endif
+ // Expect an error (chromeos warning) about extension pragmas after non-preprocessor tokens.
+ EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL1, _, _));
preprocess(str, expected);
}
@@ -92,7 +96,7 @@
// Directive successfully parsed.
EXPECT_CALL(mDirectiveHandler, handleVersion(pp::SourceLocation(0, 1), 300, SH_GLES2_SPEC));
// Expect an error about extension pragmas after non-preprocessor tokens.
- EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL, _, _));
+ EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL3, _, _));
preprocess(str, expected);
}
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.cpp b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.cpp
index a762e18..6f64295 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.cpp
@@ -36,7 +36,8 @@
if (sSavedMajorVersion == -1 || sSavedMinorVersion == -1)
{
#if defined(ANGLE_PLATFORM_WINDOWS)
- OSVERSIONINFOEX version_info = {sizeof version_info};
+ OSVERSIONINFOEX version_info = {};
+ version_info.dwOSVersionInfoSize = sizeof(version_info);
::GetVersionEx(reinterpret_cast<OSVERSIONINFO *>(&version_info));
sSavedMajorVersion = version_info.dwMajorVersion;
*majorVersion = sSavedMajorVersion;
@@ -460,6 +461,12 @@
return IsAndroidDevice("Pixel 2");
}
+// Check whether the system is a Pixel 2XL device.
+inline bool IsPixel2XL()
+{
+ return IsAndroidDevice("Pixel 2 XL");
+}
+
// Check whether the active GPU is a specific device based on the string device ID.
inline bool IsDeviceIdGPU(const std::string &gpuDeviceId)
{
@@ -517,6 +524,12 @@
return (api == GPUTestConfig::kAPISwiftShader);
}
+// Check whether the backend API has been set to Metal in the constructor
+inline bool IsMetal(const GPUTestConfig::API &api)
+{
+ return (api == GPUTestConfig::kAPIMetal);
+}
+
} // anonymous namespace
// Load all conditions in the constructor since this data will not change during a test set.
@@ -549,27 +562,29 @@
mConditions[kConditionRelease] = IsRelease();
mConditions[kConditionDebug] = IsDebug();
// If no API provided, pass these conditions by default
- mConditions[kConditionD3D9] = true;
- mConditions[kConditionD3D11] = true;
- mConditions[kConditionGLDesktop] = true;
- mConditions[kConditionGLES] = true;
- mConditions[kConditionVulkan] = true;
+ mConditions[kConditionD3D9] = true;
+ mConditions[kConditionD3D11] = true;
+ mConditions[kConditionGLDesktop] = true;
+ mConditions[kConditionGLES] = true;
+ mConditions[kConditionVulkan] = true;
mConditions[kConditionSwiftShader] = true;
+ mConditions[kConditionMetal] = true;
mConditions[kConditionNexus5X] = IsNexus5X();
- mConditions[kConditionPixel2] = IsPixel2();
+ mConditions[kConditionPixel2OrXL] = IsPixel2() || IsPixel2XL();
mConditions[kConditionNVIDIAQuadroP400] = IsNVIDIAQuadroP400();
}
// If the constructor is passed an API, load those conditions as well
GPUTestConfig::GPUTestConfig(const API &api) : GPUTestConfig()
{
- mConditions[kConditionD3D9] = IsD3D9(api);
- mConditions[kConditionD3D11] = IsD3D11(api);
- mConditions[kConditionGLDesktop] = IsGLDesktop(api);
- mConditions[kConditionGLES] = IsGLES(api);
- mConditions[kConditionVulkan] = IsVulkan(api);
+ mConditions[kConditionD3D9] = IsD3D9(api);
+ mConditions[kConditionD3D11] = IsD3D11(api);
+ mConditions[kConditionGLDesktop] = IsGLDesktop(api);
+ mConditions[kConditionGLES] = IsGLES(api);
+ mConditions[kConditionVulkan] = IsVulkan(api);
mConditions[kConditionSwiftShader] = IsSwiftShader(api);
+ mConditions[kConditionMetal] = IsMetal(api);
}
// Return a const reference to the list of all pre-calculated conditions.
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.h b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.h
index d987ddf..8249f15 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.h
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.h
@@ -7,7 +7,7 @@
#ifndef TEST_EXPECTATIONS_GPU_TEST_CONFIG_H_
#define TEST_EXPECTATIONS_GPU_TEST_CONFIG_H_
-#include <array>
+#include <common/bitset_utils.h>
namespace angle
{
@@ -24,6 +24,7 @@
kAPIGLES,
kAPIVulkan,
kAPISwiftShader,
+ kAPIMetal,
};
enum Condition
@@ -59,15 +60,16 @@
kConditionGLDesktop,
kConditionGLES,
kConditionVulkan,
+ kConditionMetal,
kConditionNexus5X,
- kConditionPixel2,
+ kConditionPixel2OrXL,
kConditionNVIDIAQuadroP400,
kConditionSwiftShader,
kNumberOfConditions,
};
- typedef std::array<bool, GPUTestConfig::kNumberOfConditions> ConditionArray;
+ using ConditionArray = angle::BitSet<GPUTestConfig::kNumberOfConditions>;
GPUTestConfig();
GPUTestConfig(const API &api);
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig_mac.mm b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig_mac.mm
index c34ec8a..d1bc641 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig_mac.mm
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig_mac.mm
@@ -10,6 +10,8 @@
#import <Cocoa/Cocoa.h>
+#include "common/apple_platform_utils.h"
+
// OSX 10.8 deprecates Gestalt but doesn't make the operatingSystemVersion property part of the
// public interface of NSProcessInfo until 10.10. Add a forward declaration.
#if !defined(MAC_OS_X_VERSION_10_10) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
@@ -27,7 +29,7 @@
Gestalt(gestaltSystemVersionMajor, reinterpret_cast<SInt32 *>(majorVersion));
Gestalt(gestaltSystemVersionMinor, reinterpret_cast<SInt32 *>(minorVersion));
#else
- if (@available(macOS 10.10, *))
+ if (ANGLE_APPLE_AVAILABLE_XC(10.10, 13.0))
{
NSOperatingSystemVersion version = [[NSProcessInfo processInfo] operatingSystemVersion];
*majorVersion = static_cast<int32_t>(version.majorVersion);
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.cpp b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.cpp
index e68c74e..173795a 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.cpp
@@ -71,6 +71,7 @@
kConfigGLES,
kConfigVulkan,
kConfigSwiftShader,
+ kConfigMetal,
// Android devices
kConfigNexus5X,
kConfigPixel2,
@@ -108,12 +109,28 @@
struct TokenInfo
{
+ constexpr TokenInfo()
+ : name(nullptr),
+ condition(GPUTestConfig::kConditionNone),
+ expectation(GPUTestExpectationsParser::kGpuTestPass)
+ {}
+
+ constexpr TokenInfo(const char *nameIn,
+ GPUTestConfig::Condition conditionIn,
+ GPUTestExpectationsParser::GPUTestExpectation expectationIn)
+ : name(nameIn), condition(conditionIn), expectation(expectationIn)
+ {}
+
+ constexpr TokenInfo(const char *nameIn, GPUTestConfig::Condition conditionIn)
+ : TokenInfo(nameIn, conditionIn, GPUTestExpectationsParser::kGpuTestPass)
+ {}
+
const char *name;
GPUTestConfig::Condition condition;
GPUTestExpectationsParser::GPUTestExpectation expectation;
};
-const TokenInfo kTokenData[kNumberOfTokens] = {
+constexpr TokenInfo kTokenData[kNumberOfTokens] = {
{"xp", GPUTestConfig::kConditionWinXP},
{"vista", GPUTestConfig::kConditionWinVista},
{"win7", GPUTestConfig::kConditionWin7},
@@ -132,7 +149,7 @@
{"mojave", GPUTestConfig::kConditionMacMojave},
{"mac", GPUTestConfig::kConditionMac},
{"linux", GPUTestConfig::kConditionLinux},
- {"chromeos"}, // (https://anglebug.com/3363) ChromeOS not supported yet
+ {"chromeos", GPUTestConfig::kConditionNone}, // https://anglebug.com/3363 CrOS not supported
{"android", GPUTestConfig::kConditionAndroid},
{"nvidia", GPUTestConfig::kConditionNVIDIA},
{"amd", GPUTestConfig::kConditionAMD},
@@ -146,19 +163,20 @@
{"gles", GPUTestConfig::kConditionGLES},
{"vulkan", GPUTestConfig::kConditionVulkan},
{"swiftshader", GPUTestConfig::kConditionSwiftShader},
+ {"metal", GPUTestConfig::kConditionMetal},
{"nexus5x", GPUTestConfig::kConditionNexus5X},
- {"pixel2", GPUTestConfig::kConditionPixel2},
+ {"pixel2orxl", GPUTestConfig::kConditionPixel2OrXL},
{"quadrop400", GPUTestConfig::kConditionNVIDIAQuadroP400},
{"pass", GPUTestConfig::kConditionNone, GPUTestExpectationsParser::kGpuTestPass},
{"fail", GPUTestConfig::kConditionNone, GPUTestExpectationsParser::kGpuTestFail},
{"flaky", GPUTestConfig::kConditionNone, GPUTestExpectationsParser::kGpuTestFlaky},
{"timeout", GPUTestConfig::kConditionNone, GPUTestExpectationsParser::kGpuTestTimeout},
{"skip", GPUTestConfig::kConditionNone, GPUTestExpectationsParser::kGpuTestSkip},
- {":"}, // kSeparatorColon
- {"="}, // kSeparatorEqual
- {}, // kNumberOfExactMatchTokens
- {}, // kTokenComment
- {}, // kTokenWord
+ {":", GPUTestConfig::kConditionNone}, // kSeparatorColon
+ {"=", GPUTestConfig::kConditionNone}, // kSeparatorEqual
+ {}, // kNumberOfExactMatchTokens
+ {}, // kTokenComment
+ {}, // kTokenWord
};
const char *kErrorMessage[kNumberOfErrors] = {
@@ -252,6 +270,27 @@
} // anonymous namespace
+const char *GetConditionName(uint32_t condition)
+{
+ if (condition == GPUTestConfig::kConditionNone)
+ {
+ return nullptr;
+ }
+
+ for (const TokenInfo &info : kTokenData)
+ {
+ if (info.condition == condition)
+ {
+ // kConditionNone is used to tag tokens that aren't conditions, but this case has been
+ // handled above.
+ ASSERT(info.condition != GPUTestConfig::kConditionNone);
+ return info.name;
+ }
+ }
+
+ return nullptr;
+}
+
GPUTestExpectationsParser::GPUTestExpectationsParser()
{
// Some sanity check.
@@ -395,6 +434,7 @@
case kConfigGLES:
case kConfigVulkan:
case kConfigSwiftShader:
+ case kConfigMetal:
case kConfigNexus5X:
case kConfigPixel2:
case kConfigNVIDIAQuadroP400:
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.h b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.h
index 18dceaf..7c878e5 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.h
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.h
@@ -86,6 +86,8 @@
std::vector<std::string> mErrorMessages;
};
+const char *GetConditionName(uint32_t condition);
+
} // namespace angle
#endif // TEST_EXPECTATIONS_GPU_TEST_EXPECTATIONS_PARSER_H_
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser_unittest.cpp b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser_unittest.cpp
index 41221d0..64751b1 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser_unittest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser_unittest.cpp
@@ -20,10 +20,7 @@
public:
GPUTestConfigTester()
{
- for (bool &condition : mConditions)
- {
- condition = false;
- }
+ mConditions.reset();
mConditions[GPUTestConfig::kConditionWin] = true;
mConditions[GPUTestConfig::kConditionNVIDIA] = true;
mConditions[GPUTestConfig::kConditionD3D11] = true;
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsTest.cpp b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsTest.cpp
index e5d15e7..05df027 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsTest.cpp
@@ -27,7 +27,8 @@
EXPECT_EQ(IsLinux(), config.getConditions()[GPUTestConfig::kConditionLinux]);
EXPECT_EQ(IsAndroid(), config.getConditions()[GPUTestConfig::kConditionAndroid]);
EXPECT_EQ(IsNexus5X(), config.getConditions()[GPUTestConfig::kConditionNexus5X]);
- EXPECT_EQ(IsPixel2(), config.getConditions()[GPUTestConfig::kConditionPixel2]);
+ EXPECT_EQ((IsPixel2() || IsPixel2XL()),
+ config.getConditions()[GPUTestConfig::kConditionPixel2OrXL]);
EXPECT_EQ(IsIntel(), config.getConditions()[GPUTestConfig::kConditionIntel]);
EXPECT_EQ(IsAMD(), config.getConditions()[GPUTestConfig::kConditionAMD]);
EXPECT_EQ(IsNVIDIA(), config.getConditions()[GPUTestConfig::kConditionNVIDIA]);
@@ -42,6 +43,7 @@
bool GLDesktop = false;
bool GLES = false;
bool Vulkan = false;
+ bool Metal = false;
switch (api)
{
case GPUTestConfig::kAPID3D9:
@@ -59,6 +61,9 @@
case GPUTestConfig::kAPIVulkan:
Vulkan = true;
break;
+ case GPUTestConfig::kAPIMetal:
+ Metal = true;
+ break;
case GPUTestConfig::kAPIUnknown:
default:
break;
@@ -68,6 +73,7 @@
EXPECT_EQ(GLDesktop, config.getConditions()[GPUTestConfig::kConditionGLDesktop]);
EXPECT_EQ(GLES, config.getConditions()[GPUTestConfig::kConditionGLES]);
EXPECT_EQ(Vulkan, config.getConditions()[GPUTestConfig::kConditionVulkan]);
+ EXPECT_EQ(Metal, config.getConditions()[GPUTestConfig::kConditionMetal]);
}
};
@@ -93,6 +99,12 @@
validateConfigAPI(config, GPUTestConfig::kAPID3D11);
}
+TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Metal)
+{
+ GPUTestConfig config(GPUTestConfig::kAPIMetal);
+ validateConfigAPI(config, GPUTestConfig::kAPIMetal);
+}
+
TEST_P(GPUTestConfigTest, GPUTestConfigConditions_GLDesktop)
{
GPUTestConfig config(GPUTestConfig::kAPIGLDesktop);
@@ -113,14 +125,6 @@
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
-ANGLE_INSTANTIATE_TEST(GPUTestConfigTest,
- ES2_D3D9(),
- ES2_D3D11(),
- ES3_D3D11(),
- ES2_OPENGL(),
- ES3_OPENGL(),
- ES2_OPENGLES(),
- ES3_OPENGLES(),
- ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(GPUTestConfigTest);
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp b/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp
index 993185b0..db077ce 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp
@@ -320,15 +320,15 @@
std::vector<const char *> childArgs = commonArgs;
childArgs.push_back(configStr.c_str());
- int exitCode = 0;
- if (!RunApp(childArgs, nullptr, nullptr, &exitCode))
+ ProcessHandle process(childArgs, false, false);
+ if (!process->started() || !process->finish())
{
std::cerr << "Launching child config " << config << " failed.\n";
}
- else if (exitCode != 0)
+ else if (process->getExitCode() != 0)
{
- std::cerr << "Child config " << config << " failed with exit code " << exitCode
- << ".\n";
+ std::cerr << "Child config " << config << " failed with exit code "
+ << process->getExitCode() << ".\n";
success = false;
}
}
@@ -481,7 +481,7 @@
{
mSetUpCalled = true;
- InitCrashHandler();
+ InitCrashHandler(nullptr);
gDefaultPlatformMethods.overrideWorkaroundsD3D = TestPlatform_overrideWorkaroundsD3D;
gDefaultPlatformMethods.overrideFeaturesVk = TestPlatform_overrideFeaturesVk;
@@ -1280,6 +1280,13 @@
return (rendererString.find("Vulkan") != std::string::npos);
}
+bool IsMetal()
+{
+ const char *renderer = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
+ std::string rendererString(renderer);
+ return (rendererString.find("Metal") != std::string::npos);
+}
+
bool IsDebug()
{
#if !defined(NDEBUG)
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h b/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h
index 6494bfe..09f4dc0c 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h
@@ -123,6 +123,15 @@
static const GLColor magenta;
};
+struct GLColor16UI
+{
+ constexpr GLColor16UI() : GLColor16UI(0, 0, 0, 0) {}
+ constexpr GLColor16UI(GLushort r, GLushort g, GLushort b, GLushort a) : R(r), G(g), B(b), A(a)
+ {}
+
+ GLushort R, G, B, A;
+};
+
struct GLColor32F
{
constexpr GLColor32F() : GLColor32F(0.0f, 0.0f, 0.0f, 0.0f) {}
@@ -168,6 +177,11 @@
std::ostream &operator<<(std::ostream &ostream, const GLColor32F &color);
GLColor32F ReadColor32F(GLint x, GLint y);
+constexpr std::array<GLenum, 6> kCubeFaces = {
+ {GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}};
+
} // namespace angle
#define EXPECT_PIXEL_EQ(x, y, r, g, b, a) \
@@ -246,6 +260,12 @@
#define EXPECT_PIXEL_8UI(x, y, r, g, b, a) \
EXPECT_PIXEL_EQ_HELPER(x, y, r, g, b, a, GLubyte, GL_RGBA_INTEGER, GL_UNSIGNED_BYTE)
+#define EXPECT_PIXEL_16UI(x, y, r, g, b, a) \
+ EXPECT_PIXEL_EQ_HELPER(x, y, r, g, b, a, GLushort, GL_RGBA, GL_UNSIGNED_SHORT)
+
+#define EXPECT_PIXEL_16UI_COLOR(x, y, color) \
+ EXPECT_PIXEL_16UI(x, y, color.R, color.G, color.B, color.A)
+
#define EXPECT_PIXEL_RGB_EQUAL(x, y, r, g, b) \
EXPECT_PIXEL_RGB_EQ_HELPER(x, y, r, g, b, GLubyte, GL_RGBA, GL_UNSIGNED_BYTE)
@@ -306,6 +326,12 @@
static void ReleaseFixtures();
+ bool isSwiftshader() const
+ {
+ return mCurrentParams->eglParameters.deviceType ==
+ EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE;
+ }
+
protected:
void ANGLETestSetUp();
void ANGLETestTearDown();
@@ -576,6 +602,7 @@
bool IsOpenGL();
bool IsNULL();
bool IsVulkan();
+bool IsMetal();
// Debug/Release
bool IsDebug();
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp
index ccd67b8..affb526 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp
@@ -87,6 +87,9 @@
case EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE:
stream << "D3D11";
break;
+ case EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE:
+ stream << "Metal";
+ break;
case EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE:
stream << "Null";
break;
@@ -407,6 +410,11 @@
return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE);
}
+EGLPlatformParameters METAL()
+{
+ return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE);
+}
+
} // namespace egl_platform
// ANGLE tests platforms
@@ -660,6 +668,11 @@
return PlatformParameters(1, 0, egl_platform::VULKAN_NULL());
}
+PlatformParameters ES1_VULKAN_SWIFTSHADER()
+{
+ return PlatformParameters(1, 0, egl_platform::VULKAN_SWIFTSHADER());
+}
+
PlatformParameters ES2_VULKAN()
{
return PlatformParameters(2, 0, egl_platform::VULKAN());
@@ -685,6 +698,11 @@
return PlatformParameters(3, 0, egl_platform::VULKAN_NULL());
}
+PlatformParameters ES3_VULKAN_SWIFTSHADER()
+{
+ return PlatformParameters(3, 0, egl_platform::VULKAN_SWIFTSHADER());
+}
+
PlatformParameters ES31_VULKAN()
{
return PlatformParameters(3, 1, egl_platform::VULKAN());
@@ -695,6 +713,26 @@
return PlatformParameters(3, 1, egl_platform::VULKAN_NULL());
}
+PlatformParameters ES31_VULKAN_SWIFTSHADER()
+{
+ return PlatformParameters(3, 1, egl_platform::VULKAN_SWIFTSHADER());
+}
+
+PlatformParameters ES1_METAL()
+{
+ return PlatformParameters(1, 0, egl_platform::METAL());
+}
+
+PlatformParameters ES2_METAL()
+{
+ return PlatformParameters(2, 0, egl_platform::METAL());
+}
+
+PlatformParameters ES3_METAL()
+{
+ return PlatformParameters(3, 0, egl_platform::METAL());
+}
+
PlatformParameters ES2_WGL()
{
return PlatformParameters(2, 0, GLESDriverType::SystemWGL);
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h
index ca4d450..801582f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h
@@ -174,13 +174,20 @@
PlatformParameters ES1_VULKAN();
PlatformParameters ES1_VULKAN_NULL();
+PlatformParameters ES1_VULKAN_SWIFTSHADER();
PlatformParameters ES2_VULKAN();
PlatformParameters ES2_VULKAN_NULL();
PlatformParameters ES2_VULKAN_SWIFTSHADER();
PlatformParameters ES3_VULKAN();
PlatformParameters ES3_VULKAN_NULL();
+PlatformParameters ES3_VULKAN_SWIFTSHADER();
PlatformParameters ES31_VULKAN();
PlatformParameters ES31_VULKAN_NULL();
+PlatformParameters ES31_VULKAN_SWIFTSHADER();
+
+PlatformParameters ES1_METAL();
+PlatformParameters ES2_METAL();
+PlatformParameters ES3_METAL();
PlatformParameters ES2_WGL();
PlatformParameters ES3_WGL();
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp
index 8a1d690..6ba8096 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp
@@ -26,6 +26,10 @@
# include "util/windows/WGLWindow.h"
#endif // defined(ANGLE_PLATFORM_WINDOWS)
+#if defined(ANGLE_PLATFORM_APPLE)
+# include "test_utils/angle_test_instantiate_apple.h"
+#endif
+
namespace angle
{
namespace
@@ -222,6 +226,11 @@
return IsAndroidDevice("Pixel 2");
}
+bool IsPixel2XL()
+{
+ return IsAndroidDevice("Pixel 2 XL");
+}
+
bool IsNVIDIAShield()
{
return IsAndroidDevice("SHIELD Android TV");
@@ -295,6 +304,7 @@
}
}
+#if defined(ANGLE_PLATFORM_APPLE)
if (IsOSX())
{
// We do not support non-ANGLE bindings on OSX.
@@ -309,9 +319,19 @@
return false;
}
- // Currently we only support the OpenGL back-end on OSX.
- return (param.getRenderer() == EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE);
+ if (param.getRenderer() == EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE &&
+ (!IsMetalRendererAvailable() || IsIntel(vendorID)))
+ {
+ // TODO(hqle): Intel metal tests seem to have problems. Disable for now.
+ // http://anglebug.com/4133
+ return false;
+ }
+
+ // Currently we only support the OpenGL & Metal back-end on OSX.
+ return (param.getRenderer() == EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE ||
+ param.getRenderer() == EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE);
}
+#endif // #if defined(ANGLE_PLATFORM_APPLE)
if (IsFuchsia())
{
@@ -449,6 +469,22 @@
case EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE:
#if !defined(ANGLE_ENABLE_VULKAN)
return false;
+#elif defined(ANGLE_IS_32_BIT_CPU)
+ // http://anglebug.com/4092
+ // Currently hitting crashes in SwS w/ 32-bit Windows so skipping for now
+ if (IsWindows() && (param.eglParameters.deviceType ==
+ EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE))
+ {
+ return false;
+ }
+ break;
+#else
+ break;
+#endif
+
+ case EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE:
+#if !defined(ANGLE_ENABLE_METAL)
+ return false;
#else
break;
#endif
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
index 910e7d3..d58f3b6 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
@@ -32,6 +32,7 @@
bool IsNexus9();
bool IsPixelXL();
bool IsPixel2();
+bool IsPixel2XL();
bool IsNVIDIAShield();
// Desktop devices.
@@ -88,8 +89,9 @@
}
};
-#define ANGLE_INSTANTIATE_TEST_PLATFORMS(testName) \
- testing::ValuesIn(::angle::FilterTestParams(testName##params, ArraySize(testName##params)))
+#define ANGLE_INSTANTIATE_TEST_PLATFORMS(testName, ...) \
+ testing::ValuesIn(::angle::FilterTestParams(testName##__VA_ARGS__##params, \
+ ArraySize(testName##__VA_ARGS__##params)))
// Instantiate the test once for each extra argument. The types of all the
// arguments must match, and getRenderer must be implemented for that type.
@@ -98,6 +100,71 @@
INSTANTIATE_TEST_SUITE_P(, testName, ANGLE_INSTANTIATE_TEST_PLATFORMS(testName), \
testing::PrintToStringParamName())
+#define ANGLE_ALL_TEST_PLATFORMS_ES1 \
+ ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN(), ES1_VULKAN_SWIFTSHADER()
+
+#define ANGLE_ALL_TEST_PLATFORMS_ES2 \
+ ES2_D3D9(), ES2_D3D11(), ES2_OPENGL(), ES2_OPENGLES(), ES2_VULKAN(), ES2_VULKAN_SWIFTSHADER()
+
+#define ANGLE_ALL_TEST_PLATFORMS_ES3 \
+ ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN(), ES3_VULKAN_SWIFTSHADER()
+
+#define ANGLE_ALL_TEST_PLATFORMS_ES31 \
+ ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES(), ES31_VULKAN(), ES31_VULKAN_SWIFTSHADER()
+
+#define ANGLE_ALL_TEST_PLATFORMS_NULL ES2_NULL(), ES3_NULL(), ES31_NULL()
+
+// Instantiate the test once for each GLES1 platform
+#define ANGLE_INSTANTIATE_TEST_ES1(testName) \
+ const PlatformParameters testName##params[] = {ANGLE_ALL_TEST_PLATFORMS_ES1}; \
+ INSTANTIATE_TEST_SUITE_P(, testName, ANGLE_INSTANTIATE_TEST_PLATFORMS(testName), \
+ testing::PrintToStringParamName())
+
+// Instantiate the test once for each GLES2 platform
+#define ANGLE_INSTANTIATE_TEST_ES2(testName) \
+ const PlatformParameters testName##params[] = {ANGLE_ALL_TEST_PLATFORMS_ES2}; \
+ INSTANTIATE_TEST_SUITE_P(, testName, ANGLE_INSTANTIATE_TEST_PLATFORMS(testName), \
+ testing::PrintToStringParamName())
+
+// Instantiate the test once for each GLES3 platform
+#define ANGLE_INSTANTIATE_TEST_ES3(testName) \
+ const PlatformParameters testName##params[] = {ANGLE_ALL_TEST_PLATFORMS_ES3}; \
+ INSTANTIATE_TEST_SUITE_P(, testName, ANGLE_INSTANTIATE_TEST_PLATFORMS(testName), \
+ testing::PrintToStringParamName())
+
+// Instantiate the test once for each GLES31 platform
+#define ANGLE_INSTANTIATE_TEST_ES31(testName) \
+ const PlatformParameters testName##params[] = {ANGLE_ALL_TEST_PLATFORMS_ES31}; \
+ INSTANTIATE_TEST_SUITE_P(, testName, ANGLE_INSTANTIATE_TEST_PLATFORMS(testName), \
+ testing::PrintToStringParamName())
+
+// Multiple ES Version macros
+#define ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(testName) \
+ const PlatformParameters testName##params[] = {ANGLE_ALL_TEST_PLATFORMS_ES2, \
+ ANGLE_ALL_TEST_PLATFORMS_ES3}; \
+ INSTANTIATE_TEST_SUITE_P(, testName, ANGLE_INSTANTIATE_TEST_PLATFORMS(testName), \
+ testing::PrintToStringParamName())
+
+#define ANGLE_INSTANTIATE_TEST_ES2_AND_ES3_AND_ES31(testName) \
+ const PlatformParameters testName##params[] = {ANGLE_ALL_TEST_PLATFORMS_ES2, \
+ ANGLE_ALL_TEST_PLATFORMS_ES3, \
+ ANGLE_ALL_TEST_PLATFORMS_ES31}; \
+ INSTANTIATE_TEST_SUITE_P(, testName, ANGLE_INSTANTIATE_TEST_PLATFORMS(testName), \
+ testing::PrintToStringParamName())
+
+#define ANGLE_INSTANTIATE_TEST_ES2_AND_ES3_AND_ES31_AND_NULL(testName) \
+ const PlatformParameters testName##params[] = { \
+ ANGLE_ALL_TEST_PLATFORMS_ES2, ANGLE_ALL_TEST_PLATFORMS_ES3, ANGLE_ALL_TEST_PLATFORMS_ES31, \
+ ANGLE_ALL_TEST_PLATFORMS_NULL}; \
+ INSTANTIATE_TEST_SUITE_P(, testName, ANGLE_INSTANTIATE_TEST_PLATFORMS(testName), \
+ testing::PrintToStringParamName())
+
+#define ANGLE_INSTANTIATE_TEST_ES3_AND_ES31(testName) \
+ const PlatformParameters testName##params[] = {ANGLE_ALL_TEST_PLATFORMS_ES3, \
+ ANGLE_ALL_TEST_PLATFORMS_ES31}; \
+ INSTANTIATE_TEST_SUITE_P(, testName, ANGLE_INSTANTIATE_TEST_PLATFORMS(testName), \
+ testing::PrintToStringParamName())
+
// Instantiate the test for a combination of N parameters and the enumeration of platforms in the
// extra args, similar to ANGLE_INSTANTIATE_TEST. The macros are defined only for the Ns currently
// in use, and can be expanded as necessary.
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate_apple.h b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate_apple.h
new file mode 100644
index 0000000..0a29a3a
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate_apple.h
@@ -0,0 +1,19 @@
+//
+// Copyright 2019 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.
+//
+// This file includes APIs to detect whether certain Apple renderer is availabe for testing.
+//
+
+#ifndef ANGLE_TEST_INSTANTIATE_APPLE_H_
+#define ANGLE_TEST_INSTANTIATE_APPLE_H_
+
+namespace angle
+{
+
+bool IsMetalRendererAvailable();
+
+} // namespace angle
+
+#endif // ANGLE_TEST_INSTANTIATE_APPLE_H_
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate_apple.mm b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate_apple.mm
new file mode 100644
index 0000000..f8e7cd8
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate_apple.mm
@@ -0,0 +1,27 @@
+//
+// Copyright 2019 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.
+//
+// This file includes APIs to detect whether certain Apple renderer is availabe for testing.
+//
+
+#include "test_utils/angle_test_instantiate_apple.h"
+
+#include "common/apple_platform_utils.h"
+
+namespace angle
+{
+
+bool IsMetalRendererAvailable()
+{
+ // NOTE(hqle): This code is currently duplicated with rx::IsMetalDisplayAvailable().
+ // Consider move it to a common source code accessible to both libANGLE and test apps.
+ if (ANGLE_APPLE_AVAILABLE_XCI(10.13, 13.0, 11))
+ {
+ return true;
+ }
+ return false;
+}
+
+} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/third_party/compiler/README.chromium b/Source/ThirdParty/ANGLE/src/third_party/compiler/README.chromium
index e69de29..4fdf757 100644
--- a/Source/ThirdParty/ANGLE/src/third_party/compiler/README.chromium
+++ b/Source/ThirdParty/ANGLE/src/third_party/compiler/README.chromium
@@ -0,0 +1,12 @@
+Name: ANGLE array bounds clamper from WebKit
+Short Name: WebKit
+URL: http://webkit.org
+Version: 0
+License: BSD
+Security Critical: yes
+
+Description:
+Implements clamping of array indexing expressions during shader translation.
+
+Local Modifications:
+None
diff --git a/Source/ThirdParty/ANGLE/third_party/VK-GL-CTS/README.angle b/Source/ThirdParty/ANGLE/third_party/VK-GL-CTS/README.angle
new file mode 100644
index 0000000..1fda485
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/third_party/VK-GL-CTS/README.angle
@@ -0,0 +1,15 @@
+Name: Khronos dEQP / CTS
+Short Name: VK-GL-CTS
+Version: 1.0
+URL: https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS
+SOURCE CODE: git clone -b VK-GL-CTS https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS
+Date: 20/06/2016
+Revision: f4f3d8079e7a37d7675ab93583e6438d0bca0e58
+Security Critical: no
+License: Apache 2.0
+License File: LICENSE
+
+Description:
+VK-GL-CTS (formally dEQP) is a set of tests and testing tools for GPUs and their drivers. It
+currently supports OpenGL ES 2.0 - 3.1 & AEP, EGL and Vulkan (though ANGLE only uses the GLES
+pieces). The dEQP has been part of the Android CTS since the L release.
diff --git a/Source/ThirdParty/ANGLE/third_party/deqp/README.angle b/Source/ThirdParty/ANGLE/third_party/deqp/README.angle
deleted file mode 100644
index 40bc066..0000000
--- a/Source/ThirdParty/ANGLE/third_party/deqp/README.angle
+++ /dev/null
@@ -1,13 +0,0 @@
-Name: drawElements Quality Program
-Short Name: dEQP
-Version: 1.0
-URL: https://source.android.com/devices/graphics/testing.html
-SOURCE CODE: git clone -b deqp-dev https://android.googlesource.com/platform/external/deqp/
-Date: 20/06/2016
-Revision: f4f3d8079e7a37d7675ab93583e6438d0bca0e58
-Security Critical: no
-License: Apache 2.0
-License File: LICENSE
-
-Description:
-dEQP is a set of tests and testing tools for GPUs and their drivers. It currently supports OpenGL ES 2.0 - 3.1 & AEP and EGL. The dEQP has been part of the Android CTS since the L release.
diff --git a/Source/ThirdParty/ANGLE/third_party/googletest/README.angle b/Source/ThirdParty/ANGLE/third_party/googletest/README.angle
deleted file mode 100644
index 76a0cb4..0000000
--- a/Source/ThirdParty/ANGLE/third_party/googletest/README.angle
+++ /dev/null
@@ -1,7 +0,0 @@
-Name: Google Test: Google's C++ Testing Framework
-Short Name: googletest
-URL: https://github.com/google/googletest.git
-Version: 1.8.0.git-7f8fefabedf2965980585be8c2bff97458f28e0b
-License: BSD
-License File: NOT_SHIPPED
-Security critical: no
diff --git a/Source/ThirdParty/ANGLE/third_party/libpng/BUILD.gn b/Source/ThirdParty/ANGLE/third_party/libpng/BUILD.gn
index e570159..89bdd63 100644
--- a/Source/ThirdParty/ANGLE/third_party/libpng/BUILD.gn
+++ b/Source/ThirdParty/ANGLE/third_party/libpng/BUILD.gn
@@ -24,6 +24,13 @@
"src/pngwtran.c",
"src/pngwutil.c",
]
+ if (target_cpu == "arm") {
+ sources += [
+ "src/arm/arm_init.c",
+ "src/arm/filter_neon.S",
+ "src/arm/filter_neon_intrinsics.c",
+ ]
+ }
if (is_win) {
cflags = [ "/wd4028" ]
}
diff --git a/Source/ThirdParty/ANGLE/third_party/spirv-cross/README.angle b/Source/ThirdParty/ANGLE/third_party/spirv-cross/README.angle
new file mode 100644
index 0000000..9e9f1d9
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/third_party/spirv-cross/README.angle
@@ -0,0 +1,10 @@
+Name: Khronos SPIRV-Cross
+Short Name: spirv-cross
+URL: https://github.com/KhronosGroup/SPIRV-Cross
+Version: N/A
+Security Critical: yes
+License: Apache 2.0
+License File: LICENSE
+
+Description:
+A tool designed for parsing and converting SPIR-V to other shader languages.
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/util/OSWindow.h b/Source/ThirdParty/ANGLE/util/OSWindow.h
index 828b48e..671270f 100644
--- a/Source/ThirdParty/ANGLE/util/OSWindow.h
+++ b/Source/ThirdParty/ANGLE/util/OSWindow.h
@@ -25,8 +25,8 @@
static OSWindow *New();
static void Delete(OSWindow **osWindow);
- virtual bool initialize(const std::string &name, int width, int height) = 0;
- virtual void destroy() = 0;
+ virtual bool initialize(const std::string &name, int width, int height) = 0;
+ virtual void destroy() = 0;
int getX() const;
int getY() const;
@@ -66,7 +66,6 @@
protected:
OSWindow();
virtual ~OSWindow();
- friend ANGLE_UTIL_EXPORT void FreeOSWindow(OSWindow *window);
int mX;
int mY;
diff --git a/Source/ThirdParty/ANGLE/util/egl_loader_autogen.cpp b/Source/ThirdParty/ANGLE/util/egl_loader_autogen.cpp
index 45f4be3..bb9457d 100644
--- a/Source/ThirdParty/ANGLE/util/egl_loader_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/util/egl_loader_autogen.cpp
@@ -76,6 +76,7 @@
ANGLE_UTIL_EXPORT PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC
eglCreateStreamProducerD3DTextureANGLE;
ANGLE_UTIL_EXPORT PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC eglStreamPostD3DTextureANGLE;
+ANGLE_UTIL_EXPORT PFNEGLSWAPBUFFERSWITHFRAMETOKENANGLEPROC eglSwapBuffersWithFrameTokenANGLE;
ANGLE_UTIL_EXPORT PFNEGLGETSYNCVALUESCHROMIUMPROC eglGetSyncValuesCHROMIUM;
ANGLE_UTIL_EXPORT PFNEGLQUERYDEVICEATTRIBEXTPROC eglQueryDeviceAttribEXT;
ANGLE_UTIL_EXPORT PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT;
@@ -210,6 +211,8 @@
loadProc("eglCreateStreamProducerD3DTextureANGLE"));
eglStreamPostD3DTextureANGLE = reinterpret_cast<PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC>(
loadProc("eglStreamPostD3DTextureANGLE"));
+ eglSwapBuffersWithFrameTokenANGLE = reinterpret_cast<PFNEGLSWAPBUFFERSWITHFRAMETOKENANGLEPROC>(
+ loadProc("eglSwapBuffersWithFrameTokenANGLE"));
eglGetSyncValuesCHROMIUM =
reinterpret_cast<PFNEGLGETSYNCVALUESCHROMIUMPROC>(loadProc("eglGetSyncValuesCHROMIUM"));
eglQueryDeviceAttribEXT =
diff --git a/Source/ThirdParty/ANGLE/util/egl_loader_autogen.h b/Source/ThirdParty/ANGLE/util/egl_loader_autogen.h
index a21ee1f..2946a94 100644
--- a/Source/ThirdParty/ANGLE/util/egl_loader_autogen.h
+++ b/Source/ThirdParty/ANGLE/util/egl_loader_autogen.h
@@ -83,6 +83,7 @@
ANGLE_UTIL_EXPORT extern PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC
eglCreateStreamProducerD3DTextureANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC eglStreamPostD3DTextureANGLE;
+ANGLE_UTIL_EXPORT extern PFNEGLSWAPBUFFERSWITHFRAMETOKENANGLEPROC eglSwapBuffersWithFrameTokenANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLGETSYNCVALUESCHROMIUMPROC eglGetSyncValuesCHROMIUM;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYDEVICEATTRIBEXTPROC eglQueryDeviceAttribEXT;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT;
diff --git a/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.cpp b/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.cpp
index 008dac3..7507352 100644
--- a/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.cpp
+++ b/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.cpp
@@ -18,7 +18,6 @@
#include <lib/fidl/cpp/interface_request.h>
#include <lib/ui/scenic/cpp/view_token_pair.h>
#include <lib/zx/channel.h>
-#include <vulkan/vulkan.h>
#include <zircon/status.h>
#include "common/debug.h"
@@ -26,36 +25,6 @@
namespace
{
-uint32_t GetImagePipeSwapchainLayerImplementationVersion()
-{
- uint32_t numInstanceLayers = 0;
- VkResult result = vkEnumerateInstanceLayerProperties(&numInstanceLayers, nullptr);
- if (result != VK_SUCCESS)
- {
- return 0u;
- }
-
- std::vector<VkLayerProperties> instanceLayers(numInstanceLayers);
- result = vkEnumerateInstanceLayerProperties(&numInstanceLayers, instanceLayers.data());
- if (result != VK_SUCCESS)
- {
- return 0u;
- }
-
- uint32_t imagePipeSwapchainImplementationVersion = 0;
- const std::string layerName = "VK_LAYER_FUCHSIA_imagepipe_swapchain";
- for (const VkLayerProperties &layerProperty : instanceLayers)
- {
- if (layerName.compare(layerProperty.layerName) != 0)
- continue;
- imagePipeSwapchainImplementationVersion = layerProperty.implementationVersion;
- break;
- }
-
- ASSERT(imagePipeSwapchainImplementationVersion > 0u);
- return imagePipeSwapchainImplementationVersion;
-}
-
async::Loop *GetDefaultLoop()
{
static async::Loop *defaultLoop = new async::Loop(&kAsyncLoopConfigAttachToCurrentThread);
@@ -138,20 +107,11 @@
void ScenicWindow::resetNativeWindow()
{
- zx_handle_t imagePipeHandle = 0;
- uint32_t imagePipeId = mScenicSession.AllocResourceId();
- if (GetImagePipeSwapchainLayerImplementationVersion() > 1u)
- {
- fuchsia::images::ImagePipe2Ptr imagePipe;
- mScenicSession.Enqueue(scenic::NewCreateImagePipe2Cmd(imagePipeId, imagePipe.NewRequest()));
- imagePipeHandle = imagePipe.Unbind().TakeChannel().release();
- }
- else
- {
- fuchsia::images::ImagePipePtr imagePipe;
- mScenicSession.Enqueue(scenic::NewCreateImagePipeCmd(imagePipeId, imagePipe.NewRequest()));
- imagePipeHandle = imagePipe.Unbind().TakeChannel().release();
- }
+ fuchsia::images::ImagePipe2Ptr imagePipe;
+ uint32_t imagePipeId = mScenicSession.AllocResourceId();
+ mScenicSession.Enqueue(scenic::NewCreateImagePipe2Cmd(imagePipeId, imagePipe.NewRequest()));
+ zx_handle_t imagePipeHandle = imagePipe.Unbind().TakeChannel().release();
+
mMaterial.SetTexture(imagePipeId);
mScenicSession.ReleaseResource(imagePipeId);
mScenicSession.Present(0, [](fuchsia::images::PresentationInfo info) {});
diff --git a/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.h b/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.h
index ac2cd8e..e8e14a92 100644
--- a/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.h
+++ b/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.h
@@ -10,6 +10,13 @@
#ifndef UTIL_FUCHSIA_SCENIC_WINDOW_H
#define UTIL_FUCHSIA_SCENIC_WINDOW_H
+#include "common/debug.h"
+#include "util/OSWindow.h"
+#include "util/util_export.h"
+
+// Disable ANGLE-specific warnings that pop up in fuchsia headers.
+ANGLE_DISABLE_DESTRUCTOR_OVERRIDE_WARNING
+
#include <fuchsia/ui/policy/cpp/fidl.h>
#include <fuchsia/ui/scenic/cpp/fidl.h>
#include <fuchsia_egl.h>
@@ -20,8 +27,7 @@
#include <zircon/types.h>
#include <string>
-#include "util/OSWindow.h"
-#include "util/util_export.h"
+ANGLE_REENABLE_DESTRUCTOR_OVERRIDE_WARNING
struct FuchsiaEGLWindowDeleter
{
@@ -32,7 +38,7 @@
{
public:
ScenicWindow();
- ~ScenicWindow();
+ ~ScenicWindow() override;
// OSWindow:
bool initialize(const std::string &name, int width, int height) override;
diff --git a/Source/ThirdParty/ANGLE/util/gles_loader_autogen.cpp b/Source/ThirdParty/ANGLE/util/gles_loader_autogen.cpp
index 99a1595..fd8e377 100644
--- a/Source/ThirdParty/ANGLE/util/gles_loader_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/util/gles_loader_autogen.cpp
@@ -424,6 +424,8 @@
ANGLE_UTIL_EXPORT PFNGLBLITFRAMEBUFFERANGLEPROC glBlitFramebufferANGLE;
ANGLE_UTIL_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC
glRenderbufferStorageMultisampleANGLE;
+ANGLE_UTIL_EXPORT PFNGLGETRENDERBUFFERIMAGEANGLEPROC glGetRenderbufferImageANGLE;
+ANGLE_UTIL_EXPORT PFNGLGETTEXIMAGEANGLEPROC glGetTexImageANGLE;
ANGLE_UTIL_EXPORT PFNGLDRAWARRAYSINSTANCEDANGLEPROC glDrawArraysInstancedANGLE;
ANGLE_UTIL_EXPORT PFNGLDRAWELEMENTSINSTANCEDANGLEPROC glDrawElementsInstancedANGLE;
ANGLE_UTIL_EXPORT PFNGLVERTEXATTRIBDIVISORANGLEPROC glVertexAttribDivisorANGLE;
@@ -432,6 +434,7 @@
ANGLE_UTIL_EXPORT PFNGLMULTIDRAWELEMENTSANGLEPROC glMultiDrawElementsANGLE;
ANGLE_UTIL_EXPORT PFNGLMULTIDRAWELEMENTSINSTANCEDANGLEPROC glMultiDrawElementsInstancedANGLE;
ANGLE_UTIL_EXPORT PFNGLPROVOKINGVERTEXANGLEPROC glProvokingVertexANGLE;
+ANGLE_UTIL_EXPORT PFNGLDISABLEEXTENSIONANGLEPROC glDisableExtensionANGLE;
ANGLE_UTIL_EXPORT PFNGLREQUESTEXTENSIONANGLEPROC glRequestExtensionANGLE;
ANGLE_UTIL_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DROBUSTANGLEPROC glCompressedTexImage2DRobustANGLE;
ANGLE_UTIL_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DROBUSTANGLEPROC glCompressedTexImage3DRobustANGLE;
@@ -1131,6 +1134,9 @@
ANGLE_UTIL_EXPORT PFNGLBLITFRAMEBUFFERANGLECONTEXTANGLEPROC glBlitFramebufferANGLEContextANGLE;
ANGLE_UTIL_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLECONTEXTANGLEPROC
glRenderbufferStorageMultisampleANGLEContextANGLE;
+ANGLE_UTIL_EXPORT PFNGLGETRENDERBUFFERIMAGEANGLECONTEXTANGLEPROC
+ glGetRenderbufferImageANGLEContextANGLE;
+ANGLE_UTIL_EXPORT PFNGLGETTEXIMAGEANGLECONTEXTANGLEPROC glGetTexImageANGLEContextANGLE;
ANGLE_UTIL_EXPORT PFNGLDRAWARRAYSINSTANCEDANGLECONTEXTANGLEPROC
glDrawArraysInstancedANGLEContextANGLE;
ANGLE_UTIL_EXPORT PFNGLDRAWELEMENTSINSTANCEDANGLECONTEXTANGLEPROC
@@ -1144,6 +1150,7 @@
ANGLE_UTIL_EXPORT PFNGLMULTIDRAWELEMENTSINSTANCEDANGLECONTEXTANGLEPROC
glMultiDrawElementsInstancedANGLEContextANGLE;
ANGLE_UTIL_EXPORT PFNGLPROVOKINGVERTEXANGLECONTEXTANGLEPROC glProvokingVertexANGLEContextANGLE;
+ANGLE_UTIL_EXPORT PFNGLDISABLEEXTENSIONANGLECONTEXTANGLEPROC glDisableExtensionANGLEContextANGLE;
ANGLE_UTIL_EXPORT PFNGLREQUESTEXTENSIONANGLECONTEXTANGLEPROC glRequestExtensionANGLEContextANGLE;
ANGLE_UTIL_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DROBUSTANGLECONTEXTANGLEPROC
glCompressedTexImage2DRobustANGLEContextANGLE;
@@ -2092,6 +2099,10 @@
glRenderbufferStorageMultisampleANGLE =
reinterpret_cast<PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC>(
loadProc("glRenderbufferStorageMultisampleANGLE"));
+ glGetRenderbufferImageANGLE = reinterpret_cast<PFNGLGETRENDERBUFFERIMAGEANGLEPROC>(
+ loadProc("glGetRenderbufferImageANGLE"));
+ glGetTexImageANGLE =
+ reinterpret_cast<PFNGLGETTEXIMAGEANGLEPROC>(loadProc("glGetTexImageANGLE"));
glDrawArraysInstancedANGLE =
reinterpret_cast<PFNGLDRAWARRAYSINSTANCEDANGLEPROC>(loadProc("glDrawArraysInstancedANGLE"));
glDrawElementsInstancedANGLE = reinterpret_cast<PFNGLDRAWELEMENTSINSTANCEDANGLEPROC>(
@@ -2108,6 +2119,8 @@
loadProc("glMultiDrawElementsInstancedANGLE"));
glProvokingVertexANGLE =
reinterpret_cast<PFNGLPROVOKINGVERTEXANGLEPROC>(loadProc("glProvokingVertexANGLE"));
+ glDisableExtensionANGLE =
+ reinterpret_cast<PFNGLDISABLEEXTENSIONANGLEPROC>(loadProc("glDisableExtensionANGLE"));
glRequestExtensionANGLE =
reinterpret_cast<PFNGLREQUESTEXTENSIONANGLEPROC>(loadProc("glRequestExtensionANGLE"));
glCompressedTexImage2DRobustANGLE = reinterpret_cast<PFNGLCOMPRESSEDTEXIMAGE2DROBUSTANGLEPROC>(
@@ -3473,6 +3486,11 @@
glRenderbufferStorageMultisampleANGLEContextANGLE =
reinterpret_cast<PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLECONTEXTANGLEPROC>(
loadProc("glRenderbufferStorageMultisampleANGLEContextANGLE"));
+ glGetRenderbufferImageANGLEContextANGLE =
+ reinterpret_cast<PFNGLGETRENDERBUFFERIMAGEANGLECONTEXTANGLEPROC>(
+ loadProc("glGetRenderbufferImageANGLEContextANGLE"));
+ glGetTexImageANGLEContextANGLE = reinterpret_cast<PFNGLGETTEXIMAGEANGLECONTEXTANGLEPROC>(
+ loadProc("glGetTexImageANGLEContextANGLE"));
glDrawArraysInstancedANGLEContextANGLE =
reinterpret_cast<PFNGLDRAWARRAYSINSTANCEDANGLECONTEXTANGLEPROC>(
loadProc("glDrawArraysInstancedANGLEContextANGLE"));
@@ -3497,6 +3515,9 @@
glProvokingVertexANGLEContextANGLE =
reinterpret_cast<PFNGLPROVOKINGVERTEXANGLECONTEXTANGLEPROC>(
loadProc("glProvokingVertexANGLEContextANGLE"));
+ glDisableExtensionANGLEContextANGLE =
+ reinterpret_cast<PFNGLDISABLEEXTENSIONANGLECONTEXTANGLEPROC>(
+ loadProc("glDisableExtensionANGLEContextANGLE"));
glRequestExtensionANGLEContextANGLE =
reinterpret_cast<PFNGLREQUESTEXTENSIONANGLECONTEXTANGLEPROC>(
loadProc("glRequestExtensionANGLEContextANGLE"));
diff --git a/Source/ThirdParty/ANGLE/util/gles_loader_autogen.h b/Source/ThirdParty/ANGLE/util/gles_loader_autogen.h
index 2bcec27..68c69da 100644
--- a/Source/ThirdParty/ANGLE/util/gles_loader_autogen.h
+++ b/Source/ThirdParty/ANGLE/util/gles_loader_autogen.h
@@ -432,6 +432,8 @@
ANGLE_UTIL_EXPORT extern PFNGLBLITFRAMEBUFFERANGLEPROC glBlitFramebufferANGLE;
ANGLE_UTIL_EXPORT extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC
glRenderbufferStorageMultisampleANGLE;
+ANGLE_UTIL_EXPORT extern PFNGLGETRENDERBUFFERIMAGEANGLEPROC glGetRenderbufferImageANGLE;
+ANGLE_UTIL_EXPORT extern PFNGLGETTEXIMAGEANGLEPROC glGetTexImageANGLE;
ANGLE_UTIL_EXPORT extern PFNGLDRAWARRAYSINSTANCEDANGLEPROC glDrawArraysInstancedANGLE;
ANGLE_UTIL_EXPORT extern PFNGLDRAWELEMENTSINSTANCEDANGLEPROC glDrawElementsInstancedANGLE;
ANGLE_UTIL_EXPORT extern PFNGLVERTEXATTRIBDIVISORANGLEPROC glVertexAttribDivisorANGLE;
@@ -440,6 +442,7 @@
ANGLE_UTIL_EXPORT extern PFNGLMULTIDRAWELEMENTSANGLEPROC glMultiDrawElementsANGLE;
ANGLE_UTIL_EXPORT extern PFNGLMULTIDRAWELEMENTSINSTANCEDANGLEPROC glMultiDrawElementsInstancedANGLE;
ANGLE_UTIL_EXPORT extern PFNGLPROVOKINGVERTEXANGLEPROC glProvokingVertexANGLE;
+ANGLE_UTIL_EXPORT extern PFNGLDISABLEEXTENSIONANGLEPROC glDisableExtensionANGLE;
ANGLE_UTIL_EXPORT extern PFNGLREQUESTEXTENSIONANGLEPROC glRequestExtensionANGLE;
ANGLE_UTIL_EXPORT extern PFNGLCOMPRESSEDTEXIMAGE2DROBUSTANGLEPROC glCompressedTexImage2DRobustANGLE;
ANGLE_UTIL_EXPORT extern PFNGLCOMPRESSEDTEXIMAGE3DROBUSTANGLEPROC glCompressedTexImage3DRobustANGLE;
@@ -1196,6 +1199,9 @@
glBlitFramebufferANGLEContextANGLE;
ANGLE_UTIL_EXPORT extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLECONTEXTANGLEPROC
glRenderbufferStorageMultisampleANGLEContextANGLE;
+ANGLE_UTIL_EXPORT extern PFNGLGETRENDERBUFFERIMAGEANGLECONTEXTANGLEPROC
+ glGetRenderbufferImageANGLEContextANGLE;
+ANGLE_UTIL_EXPORT extern PFNGLGETTEXIMAGEANGLECONTEXTANGLEPROC glGetTexImageANGLEContextANGLE;
ANGLE_UTIL_EXPORT extern PFNGLDRAWARRAYSINSTANCEDANGLECONTEXTANGLEPROC
glDrawArraysInstancedANGLEContextANGLE;
ANGLE_UTIL_EXPORT extern PFNGLDRAWELEMENTSINSTANCEDANGLECONTEXTANGLEPROC
@@ -1212,6 +1218,8 @@
glMultiDrawElementsInstancedANGLEContextANGLE;
ANGLE_UTIL_EXPORT extern PFNGLPROVOKINGVERTEXANGLECONTEXTANGLEPROC
glProvokingVertexANGLEContextANGLE;
+ANGLE_UTIL_EXPORT extern PFNGLDISABLEEXTENSIONANGLECONTEXTANGLEPROC
+ glDisableExtensionANGLEContextANGLE;
ANGLE_UTIL_EXPORT extern PFNGLREQUESTEXTENSIONANGLECONTEXTANGLEPROC
glRequestExtensionANGLEContextANGLE;
ANGLE_UTIL_EXPORT extern PFNGLCOMPRESSEDTEXIMAGE2DROBUSTANGLECONTEXTANGLEPROC
diff --git a/Source/ThirdParty/ANGLE/util/osx/OSXWindow.h b/Source/ThirdParty/ANGLE/util/osx/OSXWindow.h
index 0b2b18a..3ae2fd9 100644
--- a/Source/ThirdParty/ANGLE/util/osx/OSXWindow.h
+++ b/Source/ThirdParty/ANGLE/util/osx/OSXWindow.h
@@ -33,7 +33,7 @@
{
public:
OSXWindow();
- ~OSXWindow();
+ ~OSXWindow() override;
bool initialize(const std::string &name, int width, int height) override;
void destroy() override;
diff --git a/Source/ThirdParty/ANGLE/util/osx/OSXWindow.mm b/Source/ThirdParty/ANGLE/util/osx/OSXWindow.mm
index f7019ff..222032e 100644
--- a/Source/ThirdParty/ANGLE/util/osx/OSXWindow.mm
+++ b/Source/ThirdParty/ANGLE/util/osx/OSXWindow.mm
@@ -655,6 +655,11 @@
}
[mView setWantsLayer:YES];
+ // Disable scaling for this view. If scaling is enabled, the metal backend's
+ // frame buffer's size will be this window's size multiplied by contentScale.
+ // It will cause inconsistent testing & example apps' results.
+ mView.layer.contentsScale = 1;
+
[mWindow setContentView:mView];
[mWindow setTitle:[NSString stringWithUTF8String:name.c_str()]];
[mWindow setAcceptsMouseMovedEvents:YES];
diff --git a/Source/ThirdParty/ANGLE/util/ozone/OzoneWindow.h b/Source/ThirdParty/ANGLE/util/ozone/OzoneWindow.h
index 085e784..8af91b4 100644
--- a/Source/ThirdParty/ANGLE/util/ozone/OzoneWindow.h
+++ b/Source/ThirdParty/ANGLE/util/ozone/OzoneWindow.h
@@ -17,7 +17,7 @@
{
public:
OzoneWindow();
- ~OzoneWindow();
+ ~OzoneWindow() override;
bool initialize(const std::string &name, int width, int height) override;
void destroy() override;
diff --git a/Source/ThirdParty/ANGLE/util/posix/crash_handler_posix.cpp b/Source/ThirdParty/ANGLE/util/posix/crash_handler_posix.cpp
index e40c4b5..64c31a7 100644
--- a/Source/ThirdParty/ANGLE/util/posix/crash_handler_posix.cpp
+++ b/Source/ThirdParty/ANGLE/util/posix/crash_handler_posix.cpp
@@ -43,7 +43,7 @@
// No implementations yet.
}
-void InitCrashHandler()
+void InitCrashHandler(CrashCallback *callback)
{
// No implementations yet.
}
@@ -140,7 +140,7 @@
SIGABRT, SIGBUS, SIGFPE, SIGILL, SIGSEGV, SIGTRAP,
};
-void InitCrashHandler()
+void InitCrashHandler(CrashCallback *callback)
{
for (int sig : kSignals)
{
diff --git a/Source/ThirdParty/ANGLE/util/posix/test_utils_posix.cpp b/Source/ThirdParty/ANGLE/util/posix/test_utils_posix.cpp
index 9d6c82f..b1ec61c 100644
--- a/Source/ThirdParty/ANGLE/util/posix/test_utils_posix.cpp
+++ b/Source/ThirdParty/ANGLE/util/posix/test_utils_posix.cpp
@@ -8,24 +8,299 @@
#include "util/test_utils.h"
+#include <dlfcn.h>
#include <errno.h>
+#include <fcntl.h>
#include <sched.h>
+#include <signal.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/wait.h>
#include <time.h>
#include <unistd.h>
#include <cstdarg>
+#include <cstring>
+#include <iostream>
+#include "common/debug.h"
#include "common/platform.h"
#if !defined(ANGLE_PLATFORM_FUCHSIA)
-# include <dlfcn.h>
# include <sys/resource.h>
-# include <sys/stat.h>
-# include <sys/types.h>
-# include <sys/wait.h>
#endif
namespace angle
{
+namespace
+{
+struct ScopedPipe
+{
+ ~ScopedPipe()
+ {
+ closeEndPoint(0);
+ closeEndPoint(1);
+ }
+
+ void closeEndPoint(int index)
+ {
+ if (fds[index] >= 0)
+ {
+ close(fds[index]);
+ fds[index] = -1;
+ }
+ }
+
+ bool valid() const { return fds[0] != -1 || fds[1] != -1; }
+
+ int fds[2] = {
+ -1,
+ -1,
+ };
+};
+
+bool ReadFromFile(int fd, std::string *out)
+{
+ char buffer[256];
+ ssize_t bytesRead = read(fd, buffer, sizeof(buffer));
+
+ // If interrupted, retry.
+ if (bytesRead < 0 && errno == EINTR)
+ {
+ return true;
+ }
+
+ // If failed, or nothing to read, we are done.
+ if (bytesRead <= 0)
+ {
+ return false;
+ }
+
+ out->append(buffer, bytesRead);
+ return true;
+}
+
+void ReadEntireFile(int fd, std::string *out)
+{
+ while (true)
+ {
+ if (!ReadFromFile(fd, out))
+ break;
+ }
+}
+
+class PosixProcess : public Process
+{
+ public:
+ PosixProcess(const std::vector<const char *> &commandLineArgs,
+ bool captureStdOut,
+ bool captureStdErr)
+ {
+ if (commandLineArgs.empty())
+ {
+ return;
+ }
+
+ // Create pipes for stdout and stderr.
+ if (captureStdOut)
+ {
+ if (pipe(mStdoutPipe.fds) != 0)
+ {
+ std::cerr << "Error calling pipe: " << errno << "\n";
+ return;
+ }
+ if (fcntl(mStdoutPipe.fds[0], F_SETFL, O_NONBLOCK) == -1)
+ {
+ std::cerr << "Error calling fcntl: " << errno << "\n";
+ return;
+ }
+ }
+ if (captureStdErr)
+ {
+ if (pipe(mStderrPipe.fds) != 0)
+ {
+ std::cerr << "Error calling pipe: " << errno << "\n";
+ return;
+ }
+ if (fcntl(mStderrPipe.fds[0], F_SETFL, O_NONBLOCK) == -1)
+ {
+ std::cerr << "Error calling fcntl: " << errno << "\n";
+ return;
+ }
+ }
+
+ mPID = fork();
+ if (mPID < 0)
+ {
+ return;
+ }
+
+ mStarted = true;
+ mTimer.start();
+
+ if (mPID == 0)
+ {
+ // Child. Execute the application.
+
+ // Redirect stdout and stderr to the pipe fds.
+ if (captureStdOut)
+ {
+ if (dup2(mStdoutPipe.fds[1], STDOUT_FILENO) < 0)
+ {
+ _exit(errno);
+ }
+ mStdoutPipe.closeEndPoint(1);
+ }
+ if (captureStdErr)
+ {
+ if (dup2(mStderrPipe.fds[1], STDERR_FILENO) < 0)
+ {
+ _exit(errno);
+ }
+ mStderrPipe.closeEndPoint(1);
+ }
+
+ // Execute the application, which doesn't return unless failed. Note: execv takes argv
+ // as `char * const *` for historical reasons. It is safe to const_cast it:
+ //
+ // http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html
+ //
+ // > The statement about argv[] and envp[] being constants is included to make explicit
+ // to future writers of language bindings that these objects are completely constant.
+ // Due to a limitation of the ISO C standard, it is not possible to state that idea in
+ // standard C. Specifying two levels of const- qualification for the argv[] and envp[]
+ // parameters for the exec functions may seem to be the natural choice, given that these
+ // functions do not modify either the array of pointers or the characters to which the
+ // function points, but this would disallow existing correct code. Instead, only the
+ // array of pointers is noted as constant.
+ std::vector<char *> args;
+ for (const char *arg : commandLineArgs)
+ {
+ args.push_back(const_cast<char *>(arg));
+ }
+ args.push_back(nullptr);
+
+ execv(commandLineArgs[0], args.data());
+ std::cerr << "Error calling evecv: " << errno;
+ _exit(errno);
+ }
+ // Parent continues execution.
+ mStdoutPipe.closeEndPoint(1);
+ mStderrPipe.closeEndPoint(1);
+ }
+
+ ~PosixProcess() override {}
+
+ bool started() override { return mStarted; }
+
+ bool finish() override
+ {
+ if (!mStarted)
+ {
+ return false;
+ }
+
+ if (mFinished)
+ {
+ return true;
+ }
+
+ while (!finished())
+ {
+ angle::Sleep(1);
+ }
+
+ return true;
+ }
+
+ bool finished() override
+ {
+ if (!mStarted)
+ {
+ return false;
+ }
+
+ if (mFinished)
+ {
+ return true;
+ }
+
+ int status = 0;
+ pid_t returnedPID = ::waitpid(mPID, &status, WNOHANG);
+
+ if (returnedPID == -1 && errno != ECHILD)
+ {
+ std::cerr << "Error calling waitpid: " << ::strerror(errno) << "\n";
+ return true;
+ }
+
+ if (returnedPID == mPID)
+ {
+ mFinished = true;
+ mTimer.stop();
+ readPipes();
+ mExitCode = WEXITSTATUS(status);
+ return true;
+ }
+
+ if (mStdoutPipe.valid())
+ {
+ ReadFromFile(mStdoutPipe.fds[0], &mStdout);
+ }
+
+ if (mStderrPipe.valid())
+ {
+ ReadFromFile(mStderrPipe.fds[0], &mStderr);
+ }
+
+ return false;
+ }
+
+ int getExitCode() override { return mExitCode; }
+
+ bool kill() override
+ {
+ if (!mStarted)
+ {
+ return false;
+ }
+
+ if (finished())
+ {
+ return true;
+ }
+
+ return (::kill(mPID, SIGTERM) == 0);
+ }
+
+ private:
+ void readPipes()
+ {
+ // Close the write end of the pipes, so EOF can be generated when child exits.
+ // Then read back the output of the child.
+ if (mStdoutPipe.valid())
+ {
+ ReadEntireFile(mStdoutPipe.fds[0], &mStdout);
+ }
+ if (mStderrPipe.valid())
+ {
+ ReadEntireFile(mStderrPipe.fds[0], &mStderr);
+ }
+ }
+
+ bool mStarted = false;
+ bool mFinished = false;
+ ScopedPipe mStdoutPipe;
+ ScopedPipe mStderrPipe;
+ int mExitCode = 0;
+ pid_t mPID = -1;
+};
+
+std::string TempFileName()
+{
+ return std::string(".angle.XXXXXX");
+}
+} // anonymous namespace
+
void Sleep(unsigned int milliseconds)
{
// On Windows Sleep(0) yields while it isn't guaranteed by Posix's sleep
@@ -94,4 +369,68 @@
return false;
#endif
}
+
+bool GetTempDir(char *tempDirOut, uint32_t maxDirNameLen)
+{
+ const char *tmp = getenv("TMPDIR");
+ if (tmp)
+ {
+ strncpy(tempDirOut, tmp, maxDirNameLen);
+ return true;
+ }
+
+#if defined(ANGLE_PLATFORM_ANDROID)
+ // TODO(jmadill): Android support. http://anglebug.com/3162
+ // return PathService::Get(DIR_CACHE, path);
+ return false;
+#else
+ strncpy(tempDirOut, "/tmp", maxDirNameLen);
+ return true;
+#endif
+}
+
+bool CreateTemporaryFileInDir(const char *dir, char *tempFileNameOut, uint32_t maxFileNameLen)
+{
+ std::string tempFile = TempFileName();
+ sprintf(tempFileNameOut, "%s/%s", dir, tempFile.c_str());
+ int fd = mkstemp(tempFileNameOut);
+ close(fd);
+ return fd != -1;
+}
+
+bool DeleteFile(const char *path)
+{
+ return unlink(path) == 0;
+}
+
+Process *LaunchProcess(const std::vector<const char *> &args,
+ bool captureStdout,
+ bool captureStderr)
+{
+ return new PosixProcess(args, captureStdout, captureStderr);
+}
+
+int NumberOfProcessors()
+{
+ // sysconf returns the number of "logical" (not "physical") processors on both
+ // Mac and Linux. So we get the number of max available "logical" processors.
+ //
+ // Note that the number of "currently online" processors may be fewer than the
+ // returned value of NumberOfProcessors(). On some platforms, the kernel may
+ // make some processors offline intermittently, to save power when system
+ // loading is low.
+ //
+ // One common use case that needs to know the processor count is to create
+ // optimal number of threads for optimization. It should make plan according
+ // to the number of "max available" processors instead of "currently online"
+ // ones. The kernel should be smart enough to make all processors online when
+ // it has sufficient number of threads waiting to run.
+ long res = sysconf(_SC_NPROCESSORS_CONF);
+ if (res == -1)
+ {
+ return 1;
+ }
+
+ return static_cast<int>(res);
+}
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/util/shader_utils.cpp b/Source/ThirdParty/ANGLE/util/shader_utils.cpp
index 518608e..50afabf 100644
--- a/Source/ThirdParty/ANGLE/util/shader_utils.cpp
+++ b/Source/ThirdParty/ANGLE/util/shader_utils.cpp
@@ -4,33 +4,26 @@
// found in the LICENSE file.
//
-#include "shader_utils.h"
+#include "util/shader_utils.h"
#include <cstring>
#include <fstream>
#include <iostream>
#include <vector>
+#include "util/test_utils.h"
+
namespace
{
-std::string ReadFileToString(const std::string &source)
+bool ReadEntireFile(const std::string &filePath, std::string *contentsOut)
{
- std::ifstream stream(source.c_str());
- if (!stream)
- {
- std::cerr << "Failed to load shader file: " << source;
- return "";
- }
-
- std::string result;
-
- stream.seekg(0, std::ios::end);
- result.reserve(static_cast<unsigned int>(stream.tellg()));
- stream.seekg(0, std::ios::beg);
-
- result.assign((std::istreambuf_iterator<char>(stream)), std::istreambuf_iterator<char>());
-
- return result;
+ constexpr uint32_t kMaxBufferSize = 2000;
+ char buffer[kMaxBufferSize] = {};
+ if (!angle::ReadEntireFileToString(filePath.c_str(), buffer, kMaxBufferSize) ||
+ strlen(buffer) == 0)
+ return false;
+ *contentsOut = buffer;
+ return true;
}
GLuint CompileProgramInternal(const char *vsSource,
@@ -124,9 +117,10 @@
GLuint CompileShaderFromFile(GLenum type, const std::string &sourcePath)
{
- std::string source = ReadFileToString(sourcePath);
- if (source.empty())
+ std::string source;
+ if (!ReadEntireFile(sourcePath, &source))
{
+ std::cerr << "Error reading shader file: " << sourcePath << "\n";
return 0;
}
@@ -214,10 +208,17 @@
GLuint CompileProgramFromFiles(const std::string &vsPath, const std::string &fsPath)
{
- std::string vsSource = ReadFileToString(vsPath);
- std::string fsSource = ReadFileToString(fsPath);
- if (vsSource.empty() || fsSource.empty())
+ std::string vsSource;
+ if (!ReadEntireFile(vsPath, &vsSource))
{
+ std::cerr << "Error reading shader: " << vsPath << "\n";
+ return 0;
+ }
+
+ std::string fsSource;
+ if (!ReadEntireFile(fsPath, &fsSource))
+ {
+ std::cerr << "Error reading shader: " << fsPath << "\n";
return 0;
}
@@ -408,12 +409,12 @@
const char *Texture2D()
{
return R"(precision mediump float;
-uniform sampler2D u_tex;
+uniform sampler2D u_tex2D;
varying vec2 v_texCoord;
void main()
{
- gl_FragColor = texture2D(u_tex, v_texCoord);
+ gl_FragColor = texture2D(u_tex2D, v_texCoord);
})";
}
diff --git a/Source/ThirdParty/ANGLE/util/test_utils.cpp b/Source/ThirdParty/ANGLE/util/test_utils.cpp
new file mode 100644
index 0000000..ac4dc8f
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/util/test_utils.cpp
@@ -0,0 +1,97 @@
+//
+// Copyright 2019 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.
+//
+
+// system_utils: Defines common utility functions
+
+#include "util/test_utils.h"
+
+#include <cstring>
+#include <fstream>
+
+namespace angle
+{
+bool CreateTemporaryFile(char *tempFileNameOut, uint32_t maxFileNameLen)
+{
+ constexpr uint32_t kMaxPath = 1000u;
+ char tempPath[kMaxPath];
+
+ if (!GetTempDir(tempPath, kMaxPath))
+ return false;
+
+ return CreateTemporaryFileInDir(tempPath, tempFileNameOut, maxFileNameLen);
+}
+
+bool GetFileSize(const char *filePath, uint32_t *sizeOut)
+{
+ std::ifstream stream(filePath);
+ if (!stream)
+ {
+ return false;
+ }
+
+ stream.seekg(0, std::ios::end);
+ *sizeOut = static_cast<uint32_t>(stream.tellg());
+ return true;
+}
+
+bool ReadEntireFileToString(const char *filePath, char *contentsOut, uint32_t maxLen)
+{
+ std::ifstream stream(filePath);
+ if (!stream)
+ {
+ return false;
+ }
+
+ std::string contents;
+
+ stream.seekg(0, std::ios::end);
+ contents.reserve(static_cast<unsigned int>(stream.tellg()));
+ stream.seekg(0, std::ios::beg);
+
+ contents.assign((std::istreambuf_iterator<char>(stream)), std::istreambuf_iterator<char>());
+
+ strncpy(contentsOut, contents.c_str(), maxLen);
+ return true;
+}
+
+// static
+Process::~Process() = default;
+
+ProcessHandle::ProcessHandle() : mProcess(nullptr) {}
+
+ProcessHandle::ProcessHandle(Process *process) : mProcess(process) {}
+
+ProcessHandle::ProcessHandle(const std::vector<const char *> &args,
+ bool captureStdout,
+ bool captureStderr)
+ : mProcess(LaunchProcess(args, captureStdout, captureStderr))
+{}
+
+ProcessHandle::~ProcessHandle()
+{
+ reset();
+}
+
+ProcessHandle::ProcessHandle(ProcessHandle &&other) : mProcess(other.mProcess)
+{
+ other.mProcess = nullptr;
+}
+
+ProcessHandle &ProcessHandle::operator=(ProcessHandle &&rhs)
+{
+ std::swap(mProcess, rhs.mProcess);
+ return *this;
+}
+
+void ProcessHandle::reset()
+{
+ if (mProcess)
+ {
+ delete mProcess;
+ mProcess = nullptr;
+ }
+}
+} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/util/test_utils.h b/Source/ThirdParty/ANGLE/util/test_utils.h
index 6a4951d..7a3b217 100644
--- a/Source/ThirdParty/ANGLE/util/test_utils.h
+++ b/Source/ThirdParty/ANGLE/util/test_utils.h
@@ -9,9 +9,12 @@
#ifndef UTIL_TEST_UTILS_H_
#define UTIL_TEST_UTILS_H_
+#include <functional>
#include <string>
#include <vector>
+#include "common/angleutils.h"
+#include "util/Timer.h"
#include "util/util_export.h"
namespace angle
@@ -28,12 +31,96 @@
ANGLE_UTIL_EXPORT bool StabilizeCPUForBenchmarking();
// Set a crash handler to print stack traces.
-ANGLE_UTIL_EXPORT void InitCrashHandler();
+using CrashCallback = std::function<void()>;
+ANGLE_UTIL_EXPORT void InitCrashHandler(CrashCallback *callback);
ANGLE_UTIL_EXPORT void TerminateCrashHandler();
// Print a stack back trace.
ANGLE_UTIL_EXPORT void PrintStackBacktrace();
+// Get temporary directory.
+ANGLE_UTIL_EXPORT bool GetTempDir(char *tempDirOut, uint32_t maxDirNameLen);
+
+// Creates a temporary file. The full path is placed in |path|, and the
+// function returns true if was successful in creating the file. The file will
+// be empty and all handles closed after this function returns.
+ANGLE_UTIL_EXPORT bool CreateTemporaryFile(char *tempFileNameOut, uint32_t maxFileNameLen);
+
+// Same as CreateTemporaryFile but the file is created in |dir|.
+ANGLE_UTIL_EXPORT bool CreateTemporaryFileInDir(const char *dir,
+ char *tempFileNameOut,
+ uint32_t maxFileNameLen);
+
+// Deletes a file or directory.
+ANGLE_UTIL_EXPORT bool DeleteFile(const char *path);
+
+// Reads a file contents into a string.
+ANGLE_UTIL_EXPORT bool ReadEntireFileToString(const char *filePath,
+ char *contentsOut,
+ uint32_t maxLen);
+
+// Compute a file's size.
+ANGLE_UTIL_EXPORT bool GetFileSize(const char *filePath, uint32_t *sizeOut);
+
+class ANGLE_UTIL_EXPORT ProcessHandle;
+
+class ANGLE_UTIL_EXPORT Process : angle::NonCopyable
+{
+ public:
+ virtual bool started() = 0;
+ virtual bool finished() = 0;
+ virtual bool finish() = 0;
+ virtual bool kill() = 0;
+ virtual int getExitCode() = 0;
+
+ double getElapsedTimeSeconds() const { return mTimer.getElapsedTime(); }
+ const std::string &getStdout() const { return mStdout; }
+ const std::string &getStderr() const { return mStderr; }
+
+ protected:
+ friend class ANGLE_UTIL_EXPORT ProcessHandle;
+ virtual ~Process();
+
+ Timer mTimer;
+ std::string mStdout;
+ std::string mStderr;
+};
+
+class ANGLE_UTIL_EXPORT ProcessHandle final : angle::NonCopyable
+{
+ public:
+ ProcessHandle();
+ ProcessHandle(Process *process);
+ ProcessHandle(const std::vector<const char *> &args, bool captureStdout, bool captureStderr);
+ ~ProcessHandle();
+ ProcessHandle(ProcessHandle &&other);
+ ProcessHandle &operator=(ProcessHandle &&rhs);
+
+ Process *operator->() { return mProcess; }
+ const Process *operator->() const { return mProcess; }
+
+ operator bool() const { return mProcess != nullptr; }
+
+ void reset();
+
+ private:
+ Process *mProcess;
+};
+
+// Launch a process and optionally get the output. Uses a vector of c strings as command line
+// arguments to the child process. Returns a Process handle which can be used to retrieve
+// the stdout and stderr outputs as well as the exit code.
+//
+// Pass false for stdoutOut/stderrOut if you don't need to capture them.
+//
+// On success, returns a Process pointer with started() == true.
+// On failure, returns a Process pointer with started() == false.
+ANGLE_UTIL_EXPORT Process *LaunchProcess(const std::vector<const char *> &args,
+ bool captureStdout,
+ bool captureStderr);
+
+ANGLE_UTIL_EXPORT int NumberOfProcessors();
+
} // namespace angle
#endif // UTIL_TEST_UTILS_H_
diff --git a/Source/ThirdParty/ANGLE/util/test_utils_unittest.cpp b/Source/ThirdParty/ANGLE/util/test_utils_unittest.cpp
new file mode 100644
index 0000000..9b02a5a
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/util/test_utils_unittest.cpp
@@ -0,0 +1,223 @@
+//
+// Copyright 2019 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.
+
+// test_utils_unittest.cpp: Unit tests for ANGLE's test utility functions
+
+#include "gtest/gtest.h"
+
+#include "common/system_utils.h"
+#include "util/Timer.h"
+#include "util/test_utils.h"
+#include "util/test_utils_unittest_helper.h"
+
+using namespace angle;
+
+namespace
+{
+#if defined(ANGLE_PLATFORM_WINDOWS)
+constexpr char kRunAppHelperExecutable[] = "test_utils_unittest_helper.exe";
+#else
+constexpr char kRunAppHelperExecutable[] = "test_utils_unittest_helper";
+#endif
+
+// Transforms various line endings into C/Unix line endings:
+//
+// - A\nB -> A\nB
+// - A\rB -> A\nB
+// - A\r\nB -> A\nB
+std::string NormalizeNewLines(const std::string &str)
+{
+ std::string result;
+
+ for (size_t i = 0; i < str.size(); ++i)
+ {
+ if (str[i] == '\r')
+ {
+ if (i + 1 < str.size() && str[i + 1] == '\n')
+ {
+ ++i;
+ }
+ result += '\n';
+ }
+ else
+ {
+ result += str[i];
+ }
+ }
+
+ return result;
+}
+
+// Tests that Sleep() actually waits some time.
+TEST(TestUtils, Sleep)
+{
+ Timer timer;
+ timer.start();
+ angle::Sleep(500);
+ timer.stop();
+
+ // Use a slightly fuzzy range
+ EXPECT_GT(timer.getElapsedTime(), 0.48);
+}
+
+constexpr uint32_t kMaxPath = 1000;
+
+// Temporary file creation is not supported on Android right now.
+#if defined(ANGLE_PLATFORM_ANDROID)
+# define MAYBE_CreateAndDeleteTemporaryFile DISABLED_CreateAndDeleteTemporaryFile
+# define MAYBE_CreateAndDeleteFileInTempDir DISABLED_CreateAndDeleteFileInTempDir
+#else
+# define MAYBE_CreateAndDeleteTemporaryFile CreateAndDeleteTemporaryFile
+# define MAYBE_CreateAndDeleteFileInTempDir CreateAndDeleteFileInTempDir
+#endif // defined(ANGLE_PLATFORM_ANDROID)
+
+// Test creating and deleting temporary file.
+TEST(TestUtils, MAYBE_CreateAndDeleteTemporaryFile)
+{
+ char path[kMaxPath] = {};
+ ASSERT_TRUE(CreateTemporaryFile(path, kMaxPath));
+ ASSERT_TRUE(strlen(path) > 0);
+
+ const char kOutputString[] = "test output";
+
+ FILE *fp = fopen(path, "wt");
+ ASSERT_NE(fp, nullptr);
+ int retval = fputs(kOutputString, fp);
+ fclose(fp);
+
+ EXPECT_GE(retval, 0);
+
+ // Test ReadEntireFileToString
+ char actualString[kMaxPath];
+ EXPECT_TRUE(ReadEntireFileToString(path, actualString, kMaxPath));
+ EXPECT_EQ(strcmp(actualString, kOutputString), 0);
+
+ // Delete the temporary file.
+ EXPECT_TRUE(angle::DeleteFile(path));
+}
+
+// Tests creating and deleting a file in the system temp dir.
+TEST(TestUtils, MAYBE_CreateAndDeleteFileInTempDir)
+{
+ char tempDir[kMaxPath];
+ ASSERT_TRUE(GetTempDir(tempDir, kMaxPath));
+
+ char path[kMaxPath] = {};
+ ASSERT_TRUE(CreateTemporaryFileInDir(tempDir, path, kMaxPath));
+ ASSERT_TRUE(strlen(path) > 0);
+
+ const char kOutputString[] = "test output";
+
+ FILE *fp = fopen(path, "wt");
+ ASSERT_NE(fp, nullptr);
+ int retval = fputs(kOutputString, fp);
+ fclose(fp);
+
+ EXPECT_GE(retval, 0);
+
+ // Test ReadEntireFileToString
+ char actualString[kMaxPath];
+ EXPECT_TRUE(ReadEntireFileToString(path, actualString, kMaxPath));
+ EXPECT_EQ(strcmp(actualString, kOutputString), 0);
+
+ // Delete the temporary file.
+ EXPECT_TRUE(angle::DeleteFile(path));
+}
+
+// TODO: android support. http://anglebug.com/3125
+#if defined(ANGLE_PLATFORM_ANDROID)
+# define MAYBE_RunApp DISABLED_RunApp
+# define MAYBE_RunAppAsync DISABLED_RunAppAsync
+// TODO: fuchsia support. http://anglebug.com/3161
+#elif defined(ANGLE_PLATFORM_FUCHSIA)
+# define MAYBE_RunApp DISABLED_RunApp
+# define MAYBE_RunAppAsync DISABLED_RunAppAsync
+#else
+# define MAYBE_RunApp RunApp
+# define MAYBE_RunAppAsync RunAppAsync
+#endif // defined(ANGLE_PLATFORM_ANDROID)
+
+// Test running an external application and receiving its output
+TEST(TestUtils, MAYBE_RunApp)
+{
+ std::string executablePath = GetExecutableDirectory();
+ EXPECT_NE(executablePath, "");
+ executablePath += "/";
+ executablePath += kRunAppHelperExecutable;
+
+ std::vector<const char *> args = {executablePath.c_str(), kRunAppTestArg1, kRunAppTestArg2};
+
+ // Test that the application can be executed.
+ {
+ ProcessHandle process(args, true, true);
+ EXPECT_TRUE(process->started());
+ EXPECT_TRUE(process->finish());
+ EXPECT_TRUE(process->finished());
+
+ EXPECT_GT(process->getElapsedTimeSeconds(), 0.0);
+ EXPECT_EQ(kRunAppTestStdout, NormalizeNewLines(process->getStdout()));
+ EXPECT_EQ(kRunAppTestStderr, NormalizeNewLines(process->getStderr()));
+ EXPECT_EQ(EXIT_SUCCESS, process->getExitCode());
+ }
+
+ // Test that environment variables reach the child.
+ {
+ bool setEnvDone = SetEnvironmentVar(kRunAppTestEnvVarName, kRunAppTestEnvVarValue);
+ EXPECT_TRUE(setEnvDone);
+
+ ProcessHandle process(LaunchProcess(args, true, true));
+ EXPECT_TRUE(process->started());
+ EXPECT_TRUE(process->finish());
+
+ EXPECT_GT(process->getElapsedTimeSeconds(), 0.0);
+ EXPECT_EQ("", process->getStdout());
+ EXPECT_EQ(kRunAppTestEnvVarValue, NormalizeNewLines(process->getStderr()));
+ EXPECT_EQ(EXIT_SUCCESS, process->getExitCode());
+
+ // Unset environment var.
+ SetEnvironmentVar(kRunAppTestEnvVarName, "");
+ }
+}
+
+// Test running an external application and receiving its output asynchronously.
+TEST(TestUtils, MAYBE_RunAppAsync)
+{
+ std::string executablePath = GetExecutableDirectory();
+ EXPECT_NE(executablePath, "");
+ executablePath += "/";
+ executablePath += kRunAppHelperExecutable;
+
+ std::vector<const char *> args = {executablePath.c_str(), kRunAppTestArg1, kRunAppTestArg2};
+
+ // Test that the application can be executed.
+ {
+ ProcessHandle process(args, true, true);
+ EXPECT_TRUE(process->started());
+
+ constexpr double kTimeout = 3.0;
+
+ Timer timer;
+ timer.start();
+ while (!process->finished() && timer.getElapsedTime() < kTimeout)
+ {
+ angle::Sleep(1);
+ }
+
+ EXPECT_TRUE(process->finished());
+ EXPECT_GT(process->getElapsedTimeSeconds(), 0.0);
+ EXPECT_EQ(kRunAppTestStdout, NormalizeNewLines(process->getStdout()));
+ EXPECT_EQ(kRunAppTestStderr, NormalizeNewLines(process->getStderr()));
+ EXPECT_EQ(EXIT_SUCCESS, process->getExitCode());
+ }
+}
+
+// Verify that NumberOfProcessors returns something sane.
+TEST(TestUtils, NumberOfProcessors)
+{
+ int numProcs = angle::NumberOfProcessors();
+ EXPECT_GT(numProcs, 0);
+ EXPECT_LT(numProcs, 1000);
+}
+} // namespace
diff --git a/Source/ThirdParty/ANGLE/util/test_utils_unittest_helper.cpp b/Source/ThirdParty/ANGLE/util/test_utils_unittest_helper.cpp
new file mode 100644
index 0000000..2604f11
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/util/test_utils_unittest_helper.cpp
@@ -0,0 +1,35 @@
+//
+// Copyright 2019 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.
+
+// system_utils_unittest_helper.cpp: Helper to the SystemUtils.RunApp unittest
+
+#include "test_utils_unittest_helper.h"
+
+#include "common/system_utils.h"
+
+#include <string.h>
+
+int main(int argc, char **argv)
+{
+ if (argc != 3 || strcmp(argv[1], kRunAppTestArg1) != 0 || strcmp(argv[2], kRunAppTestArg2) != 0)
+ {
+ fprintf(stderr, "Expected command line:\n%s %s %s\n", argv[0], kRunAppTestArg1,
+ kRunAppTestArg2);
+ return EXIT_FAILURE;
+ }
+
+ std::string env = angle::GetEnvironmentVar(kRunAppTestEnvVarName);
+ if (env == "")
+ {
+ printf("%s", kRunAppTestStdout);
+ fprintf(stderr, "%s", kRunAppTestStderr);
+ }
+ else
+ {
+ fprintf(stderr, "%s", env.c_str());
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/Source/ThirdParty/ANGLE/util/test_utils_unittest_helper.h b/Source/ThirdParty/ANGLE/util/test_utils_unittest_helper.h
new file mode 100644
index 0000000..660bde1
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/util/test_utils_unittest_helper.h
@@ -0,0 +1,21 @@
+//
+// Copyright 2019 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.
+
+// system_utils_unittest_helper.h: Constants used by the SystemUtils.RunApp unittest
+
+#ifndef COMMON_SYSTEM_UTILS_UNITTEST_HELPER_H_
+#define COMMON_SYSTEM_UTILS_UNITTEST_HELPER_H_
+
+namespace
+{
+constexpr char kRunAppTestEnvVarName[] = "RUN_APP_TEST_ENV";
+constexpr char kRunAppTestEnvVarValue[] = "RunAppTest environment variable value\n";
+constexpr char kRunAppTestStdout[] = "RunAppTest stdout test\n";
+constexpr char kRunAppTestStderr[] = "RunAppTest stderr test\n .. that expands multiple lines\n";
+constexpr char kRunAppTestArg1[] = "--expected-arg1";
+constexpr char kRunAppTestArg2[] = "expected_arg2";
+} // anonymous namespace
+
+#endif // COMMON_SYSTEM_UTILS_UNITTEST_HELPER_H_
diff --git a/Source/ThirdParty/ANGLE/util/util.gni b/Source/ThirdParty/ANGLE/util/util.gni
index 4304cae..fa1b3361 100644
--- a/Source/ThirdParty/ANGLE/util/util.gni
+++ b/Source/ThirdParty/ANGLE/util/util.gni
@@ -12,6 +12,7 @@
"util/random_utils.h",
"util/shader_utils.cpp",
"util/shader_utils.h",
+ "util/test_utils.cpp",
"util/test_utils.h",
"util/util_export.h",
"util/util_gl.h",
diff --git a/Source/ThirdParty/ANGLE/util/windows/WGLWindow.cpp b/Source/ThirdParty/ANGLE/util/windows/WGLWindow.cpp
index 96c4d42..a9e82e1 100644
--- a/Source/ThirdParty/ANGLE/util/windows/WGLWindow.cpp
+++ b/Source/ThirdParty/ANGLE/util/windows/WGLWindow.cpp
@@ -19,7 +19,7 @@
{
PIXELFORMATDESCRIPTOR GetDefaultPixelFormatDescriptor()
{
- PIXELFORMATDESCRIPTOR pixelFormatDescriptor = {0};
+ PIXELFORMATDESCRIPTOR pixelFormatDescriptor = {};
pixelFormatDescriptor.nSize = sizeof(pixelFormatDescriptor);
pixelFormatDescriptor.nVersion = 1;
pixelFormatDescriptor.dwFlags =
diff --git a/Source/ThirdParty/ANGLE/util/windows/test_utils_win.cpp b/Source/ThirdParty/ANGLE/util/windows/test_utils_win.cpp
index 05a44c8..2a303a7 100644
--- a/Source/ThirdParty/ANGLE/util/windows/test_utils_win.cpp
+++ b/Source/ThirdParty/ANGLE/util/windows/test_utils_win.cpp
@@ -8,10 +8,15 @@
#include "util/test_utils.h"
+#include <aclapi.h>
#include <stdarg.h>
+#include <versionhelpers.h>
#include <windows.h>
#include <array>
+#include <iostream>
+#include <vector>
+#include "anglebase/no_destructor.h"
#include "common/angleutils.h"
#include "util/windows/third_party/StackWalker/src/StackWalker.h"
@@ -39,7 +44,7 @@
{
public:
CustomStackWalker() {}
- ~CustomStackWalker() {}
+ ~CustomStackWalker() override {}
void OnCallstackEntry(CallstackEntryType eType, CallstackEntry &entry) override
{
@@ -105,6 +110,354 @@
// The compiler wants us to return something. This is what we'd do if we didn't _exit().
return EXCEPTION_EXECUTE_HANDLER;
}
+
+CrashCallback *gCrashHandlerCallback;
+
+LONG WINAPI CrashHandler(EXCEPTION_POINTERS *e)
+{
+ if (gCrashHandlerCallback)
+ {
+ (*gCrashHandlerCallback)();
+ }
+ return StackTraceCrashHandler(e);
+}
+
+struct ScopedPipe
+{
+ ~ScopedPipe()
+ {
+ closeReadHandle();
+ closeWriteHandle();
+ }
+ bool closeReadHandle()
+ {
+ if (readHandle)
+ {
+ if (::CloseHandle(readHandle) == FALSE)
+ {
+ std::cerr << "Error closing write handle: " << GetLastError();
+ return false;
+ }
+ readHandle = nullptr;
+ }
+
+ return true;
+ }
+ bool closeWriteHandle()
+ {
+ if (writeHandle)
+ {
+ if (::CloseHandle(writeHandle) == FALSE)
+ {
+ std::cerr << "Error closing write handle: " << GetLastError();
+ return false;
+ }
+ writeHandle = nullptr;
+ }
+
+ return true;
+ }
+
+ bool valid() const { return readHandle != nullptr || writeHandle != nullptr; }
+
+ bool initPipe(SECURITY_ATTRIBUTES *securityAttribs)
+ {
+ if (::CreatePipe(&readHandle, &writeHandle, securityAttribs, 0) == FALSE)
+ {
+ std::cerr << "Error creating pipe: " << GetLastError() << "\n";
+ return false;
+ }
+
+ // Ensure the read handles to the pipes are not inherited.
+ if (::SetHandleInformation(readHandle, HANDLE_FLAG_INHERIT, 0) == FALSE)
+ {
+ std::cerr << "Error setting handle info on pipe: " << GetLastError() << "\n";
+ return false;
+ }
+
+ return true;
+ }
+
+ HANDLE readHandle = nullptr;
+ HANDLE writeHandle = nullptr;
+};
+
+// Returns false on EOF or error.
+void ReadFromFile(bool blocking, HANDLE handle, std::string *out)
+{
+ char buffer[8192];
+ DWORD bytesRead = 0;
+
+ while (true)
+ {
+ if (!blocking)
+ {
+ BOOL success = ::PeekNamedPipe(handle, nullptr, 0, nullptr, &bytesRead, nullptr);
+ if (success == FALSE || bytesRead == 0)
+ return;
+ }
+
+ BOOL success = ::ReadFile(handle, buffer, sizeof(buffer), &bytesRead, nullptr);
+ if (success == FALSE || bytesRead == 0)
+ return;
+
+ out->append(buffer, bytesRead);
+ }
+
+ // unreachable.
+}
+
+// Returns the Win32 last error code or ERROR_SUCCESS if the last error code is
+// ERROR_FILE_NOT_FOUND or ERROR_PATH_NOT_FOUND. This is useful in cases where
+// the absence of a file or path is a success condition (e.g., when attempting
+// to delete an item in the filesystem).
+bool ReturnSuccessOnNotFound()
+{
+ const DWORD error_code = ::GetLastError();
+ return (error_code == ERROR_FILE_NOT_FOUND || error_code == ERROR_PATH_NOT_FOUND);
+}
+
+// Job objects seems to have problems on the Chromium CI and Windows 7.
+bool ShouldUseJobObjects()
+{
+ return (::IsWindows10OrGreater());
+}
+
+class WindowsProcess : public Process
+{
+ public:
+ WindowsProcess(const std::vector<const char *> &commandLineArgs,
+ bool captureStdOut,
+ bool captureStdErr)
+ {
+ mProcessInfo.hProcess = INVALID_HANDLE_VALUE;
+ mProcessInfo.hThread = INVALID_HANDLE_VALUE;
+
+ std::vector<char> commandLineString;
+ for (const char *arg : commandLineArgs)
+ {
+ if (arg)
+ {
+ if (!commandLineString.empty())
+ {
+ commandLineString.push_back(' ');
+ }
+ commandLineString.insert(commandLineString.end(), arg, arg + strlen(arg));
+ }
+ }
+ commandLineString.push_back('\0');
+
+ // Set the bInheritHandle flag so pipe handles are inherited.
+ SECURITY_ATTRIBUTES securityAttribs;
+ securityAttribs.nLength = sizeof(SECURITY_ATTRIBUTES);
+ securityAttribs.bInheritHandle = TRUE;
+ securityAttribs.lpSecurityDescriptor = nullptr;
+
+ STARTUPINFOA startInfo = {};
+
+ // Create pipes for stdout and stderr.
+ startInfo.cb = sizeof(STARTUPINFOA);
+ startInfo.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);
+ if (captureStdOut)
+ {
+ if (!mStdoutPipe.initPipe(&securityAttribs))
+ {
+ return;
+ }
+ startInfo.hStdOutput = mStdoutPipe.writeHandle;
+ }
+ else
+ {
+ startInfo.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
+ }
+
+ if (captureStdErr)
+ {
+ if (!mStderrPipe.initPipe(&securityAttribs))
+ {
+ return;
+ }
+ startInfo.hStdError = mStderrPipe.writeHandle;
+ }
+ else
+ {
+ startInfo.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
+ }
+
+ if (captureStdOut || captureStdErr)
+ {
+ startInfo.dwFlags |= STARTF_USESTDHANDLES;
+ }
+
+ if (ShouldUseJobObjects())
+ {
+ // Create job object. Job objects allow us to automatically force child processes to
+ // exit if the parent process is unexpectedly killed. This should prevent ghost
+ // processes from hanging around.
+ mJobHandle = ::CreateJobObjectA(nullptr, nullptr);
+ if (mJobHandle == NULL)
+ {
+ std::cerr << "Error creating job object: " << GetLastError() << "\n";
+ return;
+ }
+
+ JOBOBJECT_EXTENDED_LIMIT_INFORMATION limitInfo = {};
+ limitInfo.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
+ if (::SetInformationJobObject(mJobHandle, JobObjectExtendedLimitInformation, &limitInfo,
+ sizeof(limitInfo)) == FALSE)
+ {
+ std::cerr << "Error setting job information: " << GetLastError() << "\n";
+ return;
+ }
+ }
+
+ // Create the child process.
+ if (::CreateProcessA(nullptr, commandLineString.data(), nullptr, nullptr,
+ TRUE, // Handles are inherited.
+ 0, nullptr, nullptr, &startInfo, &mProcessInfo) == FALSE)
+ {
+ std::cerr << "CreateProcessA Error code: " << GetLastError() << "\n";
+ return;
+ }
+
+ if (mJobHandle != nullptr)
+ {
+ if (::AssignProcessToJobObject(mJobHandle, mProcessInfo.hProcess) == FALSE)
+ {
+ std::cerr << "AssignProcessToJobObject failed: " << GetLastError() << "\n";
+ return;
+ }
+ }
+
+ // Close the write end of the pipes, so EOF can be generated when child exits.
+ if (!mStdoutPipe.closeWriteHandle() || !mStderrPipe.closeWriteHandle())
+ return;
+
+ mStarted = true;
+ mTimer.start();
+ }
+
+ ~WindowsProcess() override
+ {
+ if (mProcessInfo.hProcess != INVALID_HANDLE_VALUE)
+ {
+ ::CloseHandle(mProcessInfo.hProcess);
+ }
+ if (mProcessInfo.hThread != INVALID_HANDLE_VALUE)
+ {
+ ::CloseHandle(mProcessInfo.hThread);
+ }
+ if (mJobHandle != nullptr)
+ {
+ ::CloseHandle(mJobHandle);
+ }
+ }
+
+ bool started() override { return mStarted; }
+
+ bool finish() override
+ {
+ if (mStdoutPipe.valid())
+ {
+ ReadFromFile(true, mStdoutPipe.readHandle, &mStdout);
+ }
+
+ if (mStderrPipe.valid())
+ {
+ ReadFromFile(true, mStderrPipe.readHandle, &mStderr);
+ }
+
+ DWORD result = ::WaitForSingleObject(mProcessInfo.hProcess, INFINITE);
+ mTimer.stop();
+ return result == WAIT_OBJECT_0;
+ }
+
+ bool finished() override
+ {
+ if (!mStarted)
+ return false;
+
+ // Pipe stdin and stdout.
+ if (mStdoutPipe.valid())
+ {
+ ReadFromFile(false, mStdoutPipe.readHandle, &mStdout);
+ }
+
+ if (mStderrPipe.valid())
+ {
+ ReadFromFile(false, mStderrPipe.readHandle, &mStderr);
+ }
+
+ DWORD result = ::WaitForSingleObject(mProcessInfo.hProcess, 0);
+ if (result == WAIT_OBJECT_0)
+ {
+ mTimer.stop();
+ return true;
+ }
+ if (result == WAIT_TIMEOUT)
+ return false;
+
+ mTimer.stop();
+ std::cerr << "Unexpected result from WaitForSingleObject: " << result
+ << ". Last error: " << ::GetLastError() << "\n";
+ return false;
+ }
+
+ int getExitCode() override
+ {
+ if (!mStarted)
+ return -1;
+
+ if (mProcessInfo.hProcess == INVALID_HANDLE_VALUE)
+ return -1;
+
+ DWORD exitCode = 0;
+ if (::GetExitCodeProcess(mProcessInfo.hProcess, &exitCode) == FALSE)
+ return -1;
+
+ return static_cast<int>(exitCode);
+ }
+
+ bool kill() override
+ {
+ if (!mStarted)
+ return true;
+
+ HANDLE newHandle;
+ if (::DuplicateHandle(::GetCurrentProcess(), mProcessInfo.hProcess, ::GetCurrentProcess(),
+ &newHandle, PROCESS_ALL_ACCESS, false,
+ DUPLICATE_CLOSE_SOURCE) == FALSE)
+ {
+ std::cerr << "Error getting permission to terminate process: " << ::GetLastError()
+ << "\n";
+ return false;
+ }
+ mProcessInfo.hProcess = newHandle;
+
+ if (::TerminateThread(mProcessInfo.hThread, 1) == FALSE)
+ {
+ std::cerr << "TerminateThread failed: " << GetLastError() << "\n";
+ return false;
+ }
+
+ if (::TerminateProcess(mProcessInfo.hProcess, 1) == FALSE)
+ {
+ std::cerr << "TerminateProcess failed: " << GetLastError() << "\n";
+ return false;
+ }
+
+ mStarted = false;
+ mTimer.stop();
+ return true;
+ }
+
+ private:
+ bool mStarted = false;
+ ScopedPipe mStdoutPipe;
+ ScopedPipe mStderrPipe;
+ PROCESS_INFORMATION mProcessInfo = {};
+ HANDLE mJobHandle = nullptr;
+};
} // anonymous namespace
void Sleep(unsigned int milliseconds)
@@ -127,13 +480,18 @@
OutputDebugStringA(buffer.data());
}
-void InitCrashHandler()
+void InitCrashHandler(CrashCallback *callback)
{
- SetUnhandledExceptionFilter(StackTraceCrashHandler);
+ if (callback)
+ {
+ gCrashHandlerCallback = callback;
+ }
+ SetUnhandledExceptionFilter(CrashHandler);
}
void TerminateCrashHandler()
{
+ gCrashHandlerCallback = nullptr;
SetUnhandledExceptionFilter(nullptr);
}
@@ -144,4 +502,61 @@
RtlCaptureContext(&context);
PrintBacktrace(&context);
}
+
+Process *LaunchProcess(const std::vector<const char *> &args,
+ bool captureStdout,
+ bool captureStderr)
+{
+ return new WindowsProcess(args, captureStdout, captureStderr);
+}
+
+bool GetTempDir(char *tempDirOut, uint32_t maxDirNameLen)
+{
+ DWORD pathLen = ::GetTempPathA(maxDirNameLen, tempDirOut);
+ return (pathLen < MAX_PATH && pathLen > 0);
+}
+
+bool CreateTemporaryFileInDir(const char *dir, char *tempFileNameOut, uint32_t maxFileNameLen)
+{
+ char fileName[MAX_PATH + 1];
+ if (::GetTempFileNameA(dir, "ANGLE", 0, fileName) == 0)
+ return false;
+
+ strncpy(tempFileNameOut, fileName, maxFileNameLen);
+ return true;
+}
+
+bool DeleteFile(const char *path)
+{
+ if (strlen(path) >= MAX_PATH)
+ return false;
+
+ const DWORD attr = ::GetFileAttributesA(path);
+ // Report success if the file or path does not exist.
+ if (attr == INVALID_FILE_ATTRIBUTES)
+ {
+ return ReturnSuccessOnNotFound();
+ }
+
+ // Clear the read-only bit if it is set.
+ if ((attr & FILE_ATTRIBUTE_READONLY) &&
+ !::SetFileAttributesA(path, attr & ~FILE_ATTRIBUTE_READONLY))
+ {
+ // It's possible for |path| to be gone now under a race with other deleters.
+ return ReturnSuccessOnNotFound();
+ }
+
+ // We don't handle directories right now.
+ if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0)
+ {
+ return false;
+ }
+
+ return !!::DeleteFileA(path) ? true : ReturnSuccessOnNotFound();
+}
+
+int NumberOfProcessors()
+{
+ return ::GetActiveProcessorCount(ALL_PROCESSOR_GROUPS);
+}
} // namespace angle
diff --git a/Source/ThirdParty/ANGLE/util/windows/win32/Win32Window.cpp b/Source/ThirdParty/ANGLE/util/windows/win32/Win32Window.cpp
index c422915..d48192e 100644
--- a/Source/ThirdParty/ANGLE/util/windows/win32/Win32Window.cpp
+++ b/Source/ThirdParty/ANGLE/util/windows/win32/Win32Window.cpp
@@ -513,7 +513,7 @@
// Work around compile error from not defining "UNICODE" while Chromium does
const LPSTR idcArrow = MAKEINTRESOURCEA(32512);
- WNDCLASSEXA parentWindowClass = {0};
+ WNDCLASSEXA parentWindowClass = {};
parentWindowClass.cbSize = sizeof(WNDCLASSEXA);
parentWindowClass.style = 0;
parentWindowClass.lpfnWndProc = WndProc;
@@ -530,7 +530,7 @@
return false;
}
- WNDCLASSEXA childWindowClass = {0};
+ WNDCLASSEXA childWindowClass = {};
childWindowClass.cbSize = sizeof(WNDCLASSEXA);
childWindowClass.style = CS_OWNDC;
childWindowClass.lpfnWndProc = WndProc;
diff --git a/Source/ThirdParty/ANGLE/util/windows/win32/test_utils_win32.cpp b/Source/ThirdParty/ANGLE/util/windows/win32/test_utils_win32.cpp
index 4f4aa8d..9e08b23 100644
--- a/Source/ThirdParty/ANGLE/util/windows/win32/test_utils_win32.cpp
+++ b/Source/ThirdParty/ANGLE/util/windows/win32/test_utils_win32.cpp
@@ -11,9 +11,10 @@
#include <windows.h>
#include <array>
+#include "util/random_utils.h"
+
namespace angle
{
-
void SetLowPriorityProcess()
{
SetPriorityClass(GetCurrentProcess(), BELOW_NORMAL_PRIORITY_CLASS);
@@ -21,15 +22,15 @@
bool StabilizeCPUForBenchmarking()
{
- if (SetThreadAffinityMask(GetCurrentThread(), 1) == 0)
+ if (::SetThreadAffinityMask(::GetCurrentThread(), 1) == 0)
{
return false;
}
- if (SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS) == FALSE)
+ if (::SetPriorityClass(::GetCurrentProcess(), REALTIME_PRIORITY_CLASS) == FALSE)
{
return false;
}
- if (SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL) == FALSE)
+ if (::SetThreadPriority(::GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL) == FALSE)
{
return false;
}
diff --git a/Source/ThirdParty/ANGLE/util/x11/X11Window.h b/Source/ThirdParty/ANGLE/util/x11/X11Window.h
index 42aaa1d..7d04b8f 100644
--- a/Source/ThirdParty/ANGLE/util/x11/X11Window.h
+++ b/Source/ThirdParty/ANGLE/util/x11/X11Window.h
@@ -22,7 +22,7 @@
public:
X11Window();
X11Window(int visualId);
- ~X11Window();
+ ~X11Window() override;
bool initialize(const std::string &name, int width, int height) override;
void destroy() override;