From 06613bfe7b5fba3a792249e527008eb85594556c Mon Sep 17 00:00:00 2001 From: s-inagaki923 <94434539+s-inagaki923@users.noreply.github.com> Date: Mon, 6 Dec 2021 18:53:49 +0900 Subject: [PATCH 1/9] Make a pull request From c12ea7e23748a1c5172cbcffa05cd81426086829 Mon Sep 17 00:00:00 2001 From: s-inagaki923 <94434539+s-inagaki923@users.noreply.github.com> Date: Thu, 2 Dec 2021 17:27:23 +0900 Subject: [PATCH 2/9] set shader_framebuffer_fetch enable --- src/libANGLE/Caps.cpp | 1 + src/libANGLE/Caps.h | 3 +++ src/libANGLE/Compiler.cpp | 1 + src/libANGLE/renderer/metal/DisplayMtl.mm | 1 + 4 files changed, 6 insertions(+) diff --git a/src/libANGLE/Caps.cpp b/src/libANGLE/Caps.cpp index d24ad00f73..b4964b6108 100644 --- a/src/libANGLE/Caps.cpp +++ b/src/libANGLE/Caps.cpp @@ -811,6 +811,7 @@ const ExtensionInfoMap &GetExtensionInfoMap() map["GL_EXT_texture_storage"] = enableableExtension(&Extensions::textureStorage); map["GL_OES_texture_npot"] = enableableExtension(&Extensions::textureNPOT); map["GL_EXT_draw_buffers"] = enableableExtension(&Extensions::drawBuffers); + map["GL_EXT_shader_framebuffer_fetch"] = enableableExtension(&Extensions::shaderFramebufferFetch); map["GL_EXT_texture_filter_anisotropic"] = enableableExtension(&Extensions::textureFilterAnisotropic); map["GL_EXT_occlusion_query_boolean"] = enableableExtension(&Extensions::occlusionQueryBoolean); map["GL_NV_fence"] = esOnlyExtension(&Extensions::fence); diff --git a/src/libANGLE/Caps.h b/src/libANGLE/Caps.h index c651939cad..45472ce909 100644 --- a/src/libANGLE/Caps.h +++ b/src/libANGLE/Caps.h @@ -278,6 +278,9 @@ struct Extensions // GL_EXT_draw_buffers bool drawBuffers = false; + // GL_EXT_shader_framebuffer_fetch + bool shaderFramebufferFetch = false; + // GL_EXT_texture_filter_anisotropic bool textureFilterAnisotropic = false; GLfloat maxTextureAnisotropy = 0.0f; diff --git a/src/libANGLE/Compiler.cpp b/src/libANGLE/Compiler.cpp index ca11f030d4..8079129b6d 100644 --- a/src/libANGLE/Compiler.cpp +++ b/src/libANGLE/Compiler.cpp @@ -89,6 +89,7 @@ Compiler::Compiler(rx::GLImplFactory *implFactory, const State &state) mResources.MaxDrawBuffers = caps.maxDrawBuffers; mResources.OES_standard_derivatives = extensions.standardDerivatives; mResources.EXT_draw_buffers = extensions.drawBuffers; + mResources.EXT_shader_framebuffer_fetch = extensions.shaderFramebufferFetch; mResources.EXT_shader_texture_lod = extensions.shaderTextureLOD; mResources.OES_EGL_image_external = extensions.eglImageExternal; mResources.OES_EGL_image_external_essl3 = extensions.eglImageExternalEssl3; diff --git a/src/libANGLE/renderer/metal/DisplayMtl.mm b/src/libANGLE/renderer/metal/DisplayMtl.mm index 0718f0a0f6..2764c56952 100644 --- a/src/libANGLE/renderer/metal/DisplayMtl.mm +++ b/src/libANGLE/renderer/metal/DisplayMtl.mm @@ -654,6 +654,7 @@ void generateExtensions(egl::DeviceExtensions *outExtensions) const override mNativeExtensions.mapBufferRange = true; mNativeExtensions.textureStorage = true; mNativeExtensions.drawBuffers = true; + mNativeExtensions.shaderFramebufferFetch = true; mNativeExtensions.fragDepth = true; mNativeExtensions.framebufferBlit = true; mNativeExtensions.framebufferMultisample = true; From c44ef42c4f7c6ace69d7228905aa39cba7e68d04 Mon Sep 17 00:00:00 2001 From: s-inagaki923 <94434539+s-inagaki923@users.noreply.github.com> Date: Mon, 27 Dec 2021 14:58:49 +0900 Subject: [PATCH 3/9] Modify mtl_glslang_utils.mm set spirv-cross option ios_use_framebuffer_fetch_subpasses true --- src/libANGLE/renderer/metal/mtl_glslang_utils.mm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libANGLE/renderer/metal/mtl_glslang_utils.mm b/src/libANGLE/renderer/metal/mtl_glslang_utils.mm index 6aa456b849..cfa29a78e7 100644 --- a/src/libANGLE/renderer/metal/mtl_glslang_utils.mm +++ b/src/libANGLE/renderer/metal/mtl_glslang_utils.mm @@ -355,6 +355,12 @@ void compileEx(gl::ShaderType shaderType, compOpt.argument_buffers = false; } + if (compOpt.is_ios()) + { + // Enable framebuffer fetch + compOpt.ios_use_framebuffer_fetch_subpasses = true; + } + spirv_cross::CompilerMSL::set_msl_options(compOpt); addBuiltInResources(); From dbc8f659b897996006b4da6a41170f6d66102713 Mon Sep 17 00:00:00 2001 From: s-inagaki923 <94434539+s-inagaki923@users.noreply.github.com> Date: Mon, 27 Dec 2021 18:25:37 +0900 Subject: [PATCH 4/9] Add replace for shader framebuffer fetch --- include/GLSLANG/ShaderLang.h | 3 + include/GLSLANG/ShaderVars.h | 3 + ios/xcode/OpenGLES.xcodeproj/project.pbxproj | 46 +- src/compiler/translator/BaseTypes.h | 16 +- .../ImmutableString_ESSL_autogen.cpp | 291 +- .../translator/ImmutableString_autogen.cpp | 2 +- .../translator/ParseContext_ESSL_autogen.h | 2 +- .../ParseContext_complete_autogen.h | 2 +- src/compiler/translator/ShaderLang.cpp | 3 + src/compiler/translator/ShaderVars.cpp | 5 +- .../translator/SymbolTable_ESSL_autogen.cpp | 1683 ++++---- .../translator/SymbolTable_autogen.cpp | 3470 +++++++++-------- src/compiler/translator/SymbolTable_autogen.h | 2 +- src/compiler/translator/TranslatorVulkan.cpp | 22 +- src/compiler/translator/Types.cpp | 12 + .../builtin_function_declarations.txt | 2 +- .../ReplaceForShaderFramebufferFetch.cpp | 756 ++++ .../ReplaceForShaderFramebufferFetch.h | 41 + .../tree_util/BuiltIn_ESSL_autogen.h | 212 +- .../tree_util/BuiltIn_complete_autogen.h | 2 +- .../tree_util/RunAtTheBeginningOfShader.cpp | 35 + .../tree_util/RunAtTheBeginningOfShader.h | 27 + .../ImmutableString_test_ESSL_autogen.cpp | 1745 +++++---- .../ImmutableString_test_autogen.cpp | 116 +- 24 files changed, 4772 insertions(+), 3726 deletions(-) create mode 100644 src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.cpp create mode 100644 src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.h create mode 100644 src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp create mode 100644 src/compiler/translator/tree_util/RunAtTheBeginningOfShader.h diff --git a/include/GLSLANG/ShaderLang.h b/include/GLSLANG/ShaderLang.h index d4de77c293..d29b5a1358 100644 --- a/include/GLSLANG/ShaderLang.h +++ b/include/GLSLANG/ShaderLang.h @@ -529,6 +529,9 @@ using ShHandle = void *; namespace sh { +// EXT_shader_framebuffer_fetch and EXT_shader_framebuffer_fetch_non_coherent +extern const char kInputAttachmentName[]; + // // Driver must call this first, once, before doing any other compiler operations. // If the function succeeds, the return value is true, else false. diff --git a/include/GLSLANG/ShaderVars.h b/include/GLSLANG/ShaderVars.h index e2a67a2c21..b06eaa9817 100644 --- a/include/GLSLANG/ShaderVars.h +++ b/include/GLSLANG/ShaderVars.h @@ -170,6 +170,9 @@ struct ShaderVariable bool readonly; bool writeonly; + // From EXT_shader_framebuffer_fetch + bool isFragmentInOut; + // OutputVariable // From EXT_blend_func_extended. int index; diff --git a/ios/xcode/OpenGLES.xcodeproj/project.pbxproj b/ios/xcode/OpenGLES.xcodeproj/project.pbxproj index 8d8aa994a5..232347d0db 100644 --- a/ios/xcode/OpenGLES.xcodeproj/project.pbxproj +++ b/ios/xcode/OpenGLES.xcodeproj/project.pbxproj @@ -21,6 +21,20 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 03A9001C2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h in Headers */ = {isa = PBXBuildFile; fileRef = 03A9001A2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h */; }; + 03A9001D2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h in Headers */ = {isa = PBXBuildFile; fileRef = 03A9001A2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h */; }; + 03A9001E2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h in Headers */ = {isa = PBXBuildFile; fileRef = 03A9001A2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h */; }; + 03A9001F2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h in Headers */ = {isa = PBXBuildFile; fileRef = 03A9001A2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h */; }; + 03A900242779A37400ACAD83 /* ReplaceForShaderFramebufferFetch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03A9001B2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.cpp */; }; + 03A900252779A37600ACAD83 /* ReplaceForShaderFramebufferFetch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03A9001B2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.cpp */; }; + 03A900262779A37900ACAD83 /* ReplaceForShaderFramebufferFetch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03A9001B2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.cpp */; }; + 03A9002D2779A43400ACAD83 /* RunAtTheBeginningOfShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 03A900282779A43400ACAD83 /* RunAtTheBeginningOfShader.h */; }; + 03A9002E2779A43400ACAD83 /* RunAtTheBeginningOfShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 03A900282779A43400ACAD83 /* RunAtTheBeginningOfShader.h */; }; + 03A9002F2779A43400ACAD83 /* RunAtTheBeginningOfShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 03A900282779A43400ACAD83 /* RunAtTheBeginningOfShader.h */; }; + 03A900302779A43400ACAD83 /* RunAtTheBeginningOfShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 03A900282779A43400ACAD83 /* RunAtTheBeginningOfShader.h */; }; + 03A900312779A43C00ACAD83 /* RunAtTheBeginningOfShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03A900272779A43400ACAD83 /* RunAtTheBeginningOfShader.cpp */; }; + 03A900322779A43F00ACAD83 /* RunAtTheBeginningOfShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03A900272779A43400ACAD83 /* RunAtTheBeginningOfShader.cpp */; }; + 03A900332779A44100ACAD83 /* RunAtTheBeginningOfShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03A900272779A43400ACAD83 /* RunAtTheBeginningOfShader.cpp */; }; 0A03A9B5244C84EE00E5E114 /* Matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0AA20002234734F400E0B98C /* Matrix.cpp */; }; 0A03A9B6244C84EE00E5E114 /* egl_loader_autogen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0AA2015723474EBF00E0B98C /* egl_loader_autogen.cpp */; }; 0A03A9B7244C84EE00E5E114 /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0A9B83E6234CCE1B008BF16F /* Timer.cpp */; }; @@ -3977,6 +3991,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 03A9001A2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReplaceForShaderFramebufferFetch.h; sourceTree = ""; }; + 03A9001B2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReplaceForShaderFramebufferFetch.cpp; sourceTree = ""; }; + 03A900272779A43400ACAD83 /* RunAtTheBeginningOfShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RunAtTheBeginningOfShader.cpp; sourceTree = ""; }; + 03A900282779A43400ACAD83 /* RunAtTheBeginningOfShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RunAtTheBeginningOfShader.h; sourceTree = ""; }; 0A03A9C7244C84EE00E5E114 /* libangle_util_tvos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libangle_util_tvos.a; sourceTree = BUILT_PRODUCTS_DIR; }; 0A03A9E5244C850000E5E114 /* libangle_common_tvos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libangle_common_tvos.a; sourceTree = BUILT_PRODUCTS_DIR; }; 0A0546CD242C1DD200FC05D0 /* TransformFeedbackMtl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformFeedbackMtl.h; path = ../../src/libANGLE/renderer/metal/TransformFeedbackMtl.h; sourceTree = ""; }; @@ -4007,7 +4025,7 @@ 0A605361234651CB005CEA98 /* HashNames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HashNames.cpp; sourceTree = ""; }; 0A605362234651CB005CEA98 /* FunctionLookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionLookup.h; sourceTree = ""; }; 0A605363234651CB005CEA98 /* ExtensionGLSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtensionGLSL.h; sourceTree = ""; }; - 0A605366234651CB005CEA98 /* SymbolTable_autogen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolTable_autogen.cpp; sourceTree = ""; }; + 0A605366234651CB005CEA98 /* SymbolTable_autogen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolTable_autogen.cpp; sourceTree = ""; usesTabs = 0; }; 0A605367234651CB005CEA98 /* Symbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Symbol.cpp; sourceTree = ""; }; 0A605368234651CB005CEA98 /* IntermNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntermNode.cpp; sourceTree = ""; }; 0A605369234651CB005CEA98 /* glslang_lex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_lex.cpp; sourceTree = ""; }; @@ -4069,7 +4087,7 @@ 0A6053AD234651CB005CEA98 /* VariablePacker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VariablePacker.h; sourceTree = ""; }; 0A6053AE234651CB005CEA98 /* Severity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Severity.h; sourceTree = ""; }; 0A6053AF234651CB005CEA98 /* ValidateVaryingLocations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidateVaryingLocations.cpp; sourceTree = ""; }; - 0A6053B0234651CB005CEA98 /* BaseTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTypes.h; sourceTree = ""; }; + 0A6053B0234651CB005CEA98 /* BaseTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTypes.h; sourceTree = ""; usesTabs = 0; }; 0A6053B1234651CB005CEA98 /* Declarator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Declarator.cpp; sourceTree = ""; }; 0A6053B2234651CB005CEA98 /* ExtensionBehavior.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExtensionBehavior.cpp; sourceTree = ""; }; 0A6053B3234651CB005CEA98 /* ValidateSwitch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidateSwitch.cpp; sourceTree = ""; }; @@ -4080,7 +4098,7 @@ 0A6053BB234651CB005CEA98 /* InitializeDll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeDll.cpp; sourceTree = ""; }; 0A6053BC234651CB005CEA98 /* blocklayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blocklayout.h; sourceTree = ""; }; 0A6053BD234651CB005CEA98 /* PoolAlloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PoolAlloc.cpp; sourceTree = ""; }; - 0A6053BF234651CB005CEA98 /* ShaderLang.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderLang.cpp; sourceTree = ""; }; + 0A6053BF234651CB005CEA98 /* ShaderLang.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderLang.cpp; sourceTree = ""; usesTabs = 0; }; 0A6053C0234651CB005CEA98 /* SymbolUniqueId.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolUniqueId.cpp; sourceTree = ""; }; 0A6053C1234651CB005CEA98 /* SymbolTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolTable.h; sourceTree = ""; }; 0A6053C2234651CB005CEA98 /* FlagStd140Structs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlagStd140Structs.h; sourceTree = ""; }; @@ -4212,7 +4230,7 @@ 0A605453234651CB005CEA98 /* IsASTDepthBelowLimit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IsASTDepthBelowLimit.cpp; sourceTree = ""; }; 0A605454234651CB005CEA98 /* BuiltInFunctionEmulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BuiltInFunctionEmulator.cpp; sourceTree = ""; }; 0A605455234651CB005CEA98 /* PoolAlloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PoolAlloc.h; sourceTree = ""; }; - 0A605456234651CB005CEA98 /* TranslatorVulkan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorVulkan.cpp; sourceTree = ""; }; + 0A605456234651CB005CEA98 /* TranslatorVulkan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorVulkan.cpp; sourceTree = ""; usesTabs = 0; }; 0A605457234651CB005CEA98 /* OutputVulkanGLSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutputVulkanGLSL.h; sourceTree = ""; }; 0A605458234651CB005CEA98 /* ValidateGlobalInitializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidateGlobalInitializer.cpp; sourceTree = ""; }; 0A60545B234651CB005CEA98 /* OutputESSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutputESSL.h; sourceTree = ""; }; @@ -4224,7 +4242,7 @@ 0A605462234651CB005CEA98 /* FlagStd140Structs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FlagStd140Structs.cpp; sourceTree = ""; }; 0A605463234651CB005CEA98 /* TranslatorVulkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TranslatorVulkan.h; sourceTree = ""; }; 0A605464234651CB005CEA98 /* ValidateMaxParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidateMaxParameters.h; sourceTree = ""; }; - 0A605465234651CB005CEA98 /* ShaderVars.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderVars.cpp; sourceTree = ""; }; + 0A605465234651CB005CEA98 /* ShaderVars.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderVars.cpp; sourceTree = ""; usesTabs = 0; }; 0A605466234651CB005CEA98 /* ValidateOutputs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidateOutputs.h; sourceTree = ""; }; 0A605467234651CB005CEA98 /* IsASTDepthBelowLimit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IsASTDepthBelowLimit.h; sourceTree = ""; }; 0A605468234651CB005CEA98 /* ParseContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParseContext.h; sourceTree = ""; }; @@ -5903,6 +5921,8 @@ 0A60537F234651CB005CEA98 /* FindMain.h */, 0A605380234651CB005CEA98 /* FindMain.cpp */, 0A605381234651CB005CEA98 /* IntermNodePatternMatcher.h */, + 03A900272779A43400ACAD83 /* RunAtTheBeginningOfShader.cpp */, + 03A900282779A43400ACAD83 /* RunAtTheBeginningOfShader.h */, 0A605382234651CB005CEA98 /* RunAtTheEndOfShader.cpp */, 0A7C2E10244390B000B75BA0 /* ReplaceClipDistanceVariable.cpp */, 0A7C2E11244390B000B75BA0 /* ReplaceClipDistanceVariable.h */, @@ -5969,6 +5989,8 @@ 0A60541A234651CB005CEA98 /* RemoveSwitchFallThrough.h */, 0A6053F1234651CB005CEA98 /* RemoveUnreferencedVariables.cpp */, 0A605425234651CB005CEA98 /* RemoveUnreferencedVariables.h */, + 03A9001B2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.cpp */, + 03A9001A2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h */, 0A9B840D234CD587008BF16F /* RewriteAtomicCounters.cpp */, 0A9B8405234CD586008BF16F /* RewriteAtomicCounters.h */, 0A60542B234651CB005CEA98 /* RewriteAtomicFunctionExpressions.cpp */, @@ -7420,6 +7442,7 @@ 0A605581234651CC005CEA98 /* OutputVulkanGLSL.h in Headers */, 0A605F32234667CC005CEA98 /* validationGL12_autogen.h in Headers */, 0A605591234651CC005CEA98 /* IsASTDepthBelowLimit.h in Headers */, + 03A9002D2779A43400ACAD83 /* RunAtTheBeginningOfShader.h in Headers */, 0A6054BB234651CB005CEA98 /* length_limits.h in Headers */, 0A60553F234651CC005CEA98 /* RemoveInvariantDeclaration.h in Headers */, 0A605F44234667CC005CEA98 /* Context_gl_1_1_autogen.h in Headers */, @@ -7461,6 +7484,7 @@ 0A605FBF234667CE005CEA98 /* Context_gles_1_0_autogen.h in Headers */, 0A605F5C234667CD005CEA98 /* validationEGL.h in Headers */, 0A605F89234667CD005CEA98 /* Display.h in Headers */, + 03A9001C2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h in Headers */, 0A605B9D234667C5005CEA98 /* Context_gles_3_0_autogen.h in Headers */, 0A605B8E234667C5005CEA98 /* Error.h in Headers */, 0A605524234651CC005CEA98 /* ClampFragDepth.h in Headers */, @@ -7726,6 +7750,7 @@ 0A90F7E324065C0C005BA9A8 /* OutputVulkanGLSL.h in Headers */, 0A90F7E424065C0C005BA9A8 /* validationGL12_autogen.h in Headers */, 0A90F7E524065C0C005BA9A8 /* IsASTDepthBelowLimit.h in Headers */, + 03A9002E2779A43400ACAD83 /* RunAtTheBeginningOfShader.h in Headers */, 0A90F7E624065C0C005BA9A8 /* length_limits.h in Headers */, 0A90F7E724065C0C005BA9A8 /* RemoveInvariantDeclaration.h in Headers */, 0A90F7E824065C0C005BA9A8 /* Context_gl_1_1_autogen.h in Headers */, @@ -7767,6 +7792,7 @@ 0A90F80D24065C0C005BA9A8 /* Context_gles_1_0_autogen.h in Headers */, 0A90F80E24065C0C005BA9A8 /* validationEGL.h in Headers */, 0A90F80F24065C0C005BA9A8 /* Display.h in Headers */, + 03A9001D2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h in Headers */, 0A90F81024065C0C005BA9A8 /* Context_gles_3_0_autogen.h in Headers */, 0A90F81124065C0C005BA9A8 /* Error.h in Headers */, 0A90F81224065C0C005BA9A8 /* ClampFragDepth.h in Headers */, @@ -8046,6 +8072,7 @@ 0AA2FDBA2347260000E0B98C /* OutputVulkanGLSL.h in Headers */, 0AA2FDBB2347260000E0B98C /* validationGL12_autogen.h in Headers */, 0AA2FDBC2347260000E0B98C /* IsASTDepthBelowLimit.h in Headers */, + 03A900302779A43400ACAD83 /* RunAtTheBeginningOfShader.h in Headers */, 0AA2FDBD2347260000E0B98C /* length_limits.h in Headers */, 0AA2FDBE2347260000E0B98C /* RemoveInvariantDeclaration.h in Headers */, 0AA2FDBF2347260000E0B98C /* Context_gl_1_1_autogen.h in Headers */, @@ -8087,6 +8114,7 @@ 0AA2FDE82347260000E0B98C /* Context_gles_1_0_autogen.h in Headers */, 0AA2FDE92347260000E0B98C /* validationEGL.h in Headers */, 0AA2FDEA2347260000E0B98C /* Display.h in Headers */, + 03A9001F2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h in Headers */, 0AA2FDEB2347260000E0B98C /* Context_gles_3_0_autogen.h in Headers */, 0AA2FDEC2347260000E0B98C /* Error.h in Headers */, 0AA2FDED2347260000E0B98C /* ClampFragDepth.h in Headers */, @@ -8352,6 +8380,7 @@ 0AF957C1244C7CD700F59740 /* OutputVulkanGLSL.h in Headers */, 0AF957C2244C7CD700F59740 /* validationGL12_autogen.h in Headers */, 0AF957C3244C7CD700F59740 /* IsASTDepthBelowLimit.h in Headers */, + 03A9002F2779A43400ACAD83 /* RunAtTheBeginningOfShader.h in Headers */, 0AF957C4244C7CD700F59740 /* length_limits.h in Headers */, 0AF957C5244C7CD700F59740 /* RemoveInvariantDeclaration.h in Headers */, 0AF957C6244C7CD700F59740 /* Context_gl_1_1_autogen.h in Headers */, @@ -8393,6 +8422,7 @@ 0AF957EB244C7CD700F59740 /* Context_gles_1_0_autogen.h in Headers */, 0AF957EC244C7CD700F59740 /* validationEGL.h in Headers */, 0AF957ED244C7CD700F59740 /* Display.h in Headers */, + 03A9001E2779A35500ACAD83 /* ReplaceForShaderFramebufferFetch.h in Headers */, 0AF957EE244C7CD700F59740 /* Context_gles_3_0_autogen.h in Headers */, 0AF957EF244C7CD700F59740 /* Error.h in Headers */, 0AF957F0244C7CD700F59740 /* ClampFragDepth.h in Headers */, @@ -10816,6 +10846,7 @@ 0A936E80244CEFA800B3497E /* WorkerThread.cpp in Sources */, 0A936E81244CEFA800B3497E /* VectorizeVectorScalarArithmetic.cpp in Sources */, 0A936E82244CEFA800B3497E /* ClampPointSize.cpp in Sources */, + 03A900242779A37400ACAD83 /* ReplaceForShaderFramebufferFetch.cpp in Sources */, 0A936E83244CEFA800B3497E /* IntermNode_util.cpp in Sources */, 0A936E84244CEFA800B3497E /* Stream.cpp in Sources */, 0A936E85244CEFA800B3497E /* ImmutableString_autogen.cpp in Sources */, @@ -10934,6 +10965,7 @@ 0A936EFF244CEFA800B3497E /* OutputGLSLBase.cpp in Sources */, 0A936F00244CEFA800B3497E /* load_functions_table_autogen.cpp in Sources */, 0A936F02244CEFA800B3497E /* FindSymbolNode.cpp in Sources */, + 03A900312779A43C00ACAD83 /* RunAtTheBeginningOfShader.cpp in Sources */, 0A936F04244CEFA800B3497E /* validationES.cpp in Sources */, 0A936F05244CEFA800B3497E /* ValidateSwitch.cpp in Sources */, 0A936F06244CEFA800B3497E /* EmulateMultiDrawShaderBuiltins.cpp in Sources */, @@ -11028,6 +11060,7 @@ 0A936F83244CF03700B3497E /* UnfoldShortCircuitToIf.cpp in Sources */, 0A936F84244CF03700B3497E /* EmulateGLFragColorBroadcast.cpp in Sources */, 0A936F85244CF03700B3497E /* SplitSequenceOperator.cpp in Sources */, + 03A900252779A37600ACAD83 /* ReplaceForShaderFramebufferFetch.cpp in Sources */, 0A936F86244CF03700B3497E /* InitializeVariables.cpp in Sources */, 0A936F87244CF03700B3497E /* queryconversions.cpp in Sources */, 0A936F8A244CF03700B3497E /* renderer_utils.cpp in Sources */, @@ -11039,6 +11072,7 @@ 0A936F90244CF03700B3497E /* validationEGL.cpp in Sources */, 0A936F91244CF03700B3497E /* DiagnosticsBase.cpp in Sources */, 0A936F92244CF03700B3497E /* FoldExpressions.cpp in Sources */, + 03A900322779A43F00ACAD83 /* RunAtTheBeginningOfShader.cpp in Sources */, 0A936F93244CF03700B3497E /* queryutils.cpp in Sources */, 0A936F94244CF03700B3497E /* Platform.cpp in Sources */, 0A936F96244CF03700B3497E /* IntermNode.cpp in Sources */, @@ -11276,6 +11310,7 @@ 0A9370B2244CF04900B3497E /* WorkerThread.cpp in Sources */, 0A9370B3244CF04900B3497E /* VectorizeVectorScalarArithmetic.cpp in Sources */, 0A9370B4244CF04900B3497E /* ClampPointSize.cpp in Sources */, + 03A900262779A37900ACAD83 /* ReplaceForShaderFramebufferFetch.cpp in Sources */, 0A9370B5244CF04900B3497E /* IntermNode_util.cpp in Sources */, 0A9370B6244CF04900B3497E /* Stream.cpp in Sources */, 0A9370B7244CF04900B3497E /* ImmutableString_autogen.cpp in Sources */, @@ -11394,6 +11429,7 @@ 0A937131244CF04900B3497E /* OutputGLSLBase.cpp in Sources */, 0A937132244CF04900B3497E /* load_functions_table_autogen.cpp in Sources */, 0A937134244CF04900B3497E /* FindSymbolNode.cpp in Sources */, + 03A900332779A44100ACAD83 /* RunAtTheBeginningOfShader.cpp in Sources */, 0A937136244CF04900B3497E /* validationES.cpp in Sources */, 0A937137244CF04900B3497E /* ValidateSwitch.cpp in Sources */, 0A937138244CF04900B3497E /* EmulateMultiDrawShaderBuiltins.cpp in Sources */, diff --git a/src/compiler/translator/BaseTypes.h b/src/compiler/translator/BaseTypes.h index c19946feb4..942d895098 100644 --- a/src/compiler/translator/BaseTypes.h +++ b/src/compiler/translator/BaseTypes.h @@ -920,6 +920,8 @@ enum TQualifier EvqVertexOut, // Vertex shader output EvqFragmentIn, // Fragment shader input + EvqFragmentInOut, // EXT_shader_framebuffer_fetch qualifier + // parameters EvqIn, EvqOut, @@ -1081,7 +1083,7 @@ struct TLayoutQualifier matrixPacking == EmpUnspecified && blockStorage == EbsUnspecified && !localSize.isAnyValueSet() && imageInternalFormat == EiifUnspecified && primitiveType == EptUndefined && invocations == 0 && maxVertices == -1 && - index == -1; + index == -1 && inputAttachmentIndex == -1 && noncoherent == false; } bool isCombinationValid() const @@ -1090,6 +1092,7 @@ struct TLayoutQualifier bool numViewsSet = (numViews != -1); bool geometryShaderSpecified = (primitiveType != EptUndefined) || (invocations != 0) || (maxVertices != -1); + bool subpassInputSpecified = (inputAttachmentIndex != -1); bool otherLayoutQualifiersSpecified = (location != -1 || binding != -1 || index != -1 || matrixPacking != EmpUnspecified || blockStorage != EbsUnspecified || imageInternalFormat != EiifUnspecified); @@ -1097,7 +1100,8 @@ struct TLayoutQualifier // we can have either the work group size specified, or number of views, // or yuv layout qualifier, or the other layout qualifiers. return (workSizeSpecified ? 1 : 0) + (numViewsSet ? 1 : 0) + (yuv ? 1 : 0) + - (otherLayoutQualifiersSpecified ? 1 : 0) + (geometryShaderSpecified ? 1 : 0) <= + (otherLayoutQualifiersSpecified ? 1 : 0) + (geometryShaderSpecified ? 1 : 0) + + (subpassInputSpecified ? 1 : 0) + (noncoherent ? 1 : 0) <= 1; } @@ -1134,6 +1138,10 @@ struct TLayoutQualifier // EXT_blend_func_extended fragment output layout qualifier int index; + // EXT_shader_framebuffer_fetch layout qualifiers. + int inputAttachmentIndex; + bool noncoherent; + private: explicit constexpr TLayoutQualifier(int /*placeholder*/) : location(-1), @@ -1149,7 +1157,9 @@ struct TLayoutQualifier primitiveType(EptUndefined), invocations(0), maxVertices(-1), - index(-1) + index(-1), + inputAttachmentIndex(-1), + noncoherent(false) {} }; diff --git a/src/compiler/translator/ImmutableString_ESSL_autogen.cpp b/src/compiler/translator/ImmutableString_ESSL_autogen.cpp index 27896a81bd..da2fa656cc 100644 --- a/src/compiler/translator/ImmutableString_ESSL_autogen.cpp +++ b/src/compiler/translator/ImmutableString_ESSL_autogen.cpp @@ -2,7 +2,7 @@ // Generated by gen_builtin_symbols.py using data from builtin_variables.json and // builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // @@ -24,131 +24,126 @@ std::ostream &operator<<(std::ostream &os, const sh::ImmutableString &str) namespace { -constexpr int mangledkT1[] = {1812, 1216, 17, 1453, 418, 1183, 493, 1754, 763, 311, - 514, 1525, 466, 1777, 1087, 1320, 180, 1667, 1625, 1784, - 1769, 1438, 1067, 1731, 1614, 582, 1822, 117, 1061, 1621, - 1608, 1553, 896, 445, 796, 866, 1587}; -constexpr int mangledkT2[] = {1412, 633, 929, 1791, 69, 1422, 1105, 1219, 1538, 424, - 1685, 918, 24, 1486, 426, 1539, 394, 247, 1034, 44, - 355, 544, 1590, 1309, 13, 1292, 795, 1704, 1624, 81, - 450, 505, 1466, 340, 1217, 1066, 535}; +constexpr int mangledkT1[] = {25, 95, 164, 506, 88, 563, 1516, 1663, 96, 1266, + 424, 689, 1637, 638, 976, 1223, 1378, 941, 94, 475, + 1183, 428, 14, 556, 1697, 1146, 271, 847, 1338, 368, + 63, 1479, 936, 904, 383, 848, 2}; +constexpr int mangledkT2[] = {626, 932, 1250, 808, 416, 1305, 744, 1309, 708, 492, + 1496, 1434, 809, 658, 797, 1054, 418, 1106, 773, 808, + 710, 1158, 742, 334, 785, 1528, 1704, 1242, 1157, 532, + 227, 1173, 979, 1050, 43, 988, 415}; constexpr int mangledkG[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1090, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1719, 0, 0, 0, 0, 0, 0, 0, 415, 0, - 0, 0, 0, 0, 23, 0, 0, 0, 785, 365, 1255, 0, 0, 0, 1763, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 1400, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1266, 0, 0, 0, 0, 0, 0, 0, - 1795, 0, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, - 329, 0, 0, 0, 0, 0, 0, 1160, 0, 0, 568, 0, 0, 0, 0, 323, - 0, 38, 0, 0, 0, 0, 59, 0, 0, 0, 1214, 0, 0, 0, 1811, 0, - 1675, 0, 347, 1379, 1841, 459, 267, 0, 237, 406, 0, 103, 743, 0, 1259, 1164, - 228, 1624, 566, 0, 0, 0, 262, 0, 0, 0, 684, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 923, 0, 0, 0, 352, 0, 0, 215, 658, 0, 554, - 1670, 0, 1022, 0, 779, 1508, 926, 0, 0, 203, 0, 0, 0, 0, 0, 0, - 0, 0, 1646, 0, 638, 0, 0, 0, 1144, 0, 632, 0, 973, 0, 0, 0, - 0, 1194, 0, 649, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 1195, 0, - 0, 0, 827, 0, 0, 0, 0, 0, 763, 1198, 0, 0, 0, 0, 122, 466, - 0, 458, 0, 0, 0, 1667, 0, 0, 0, 0, 0, 0, 102, 0, 1801, 117, - 0, 0, 0, 0, 683, 0, 1827, 0, 0, 0, 0, 600, 0, 1716, 0, 761, - 0, 0, 0, 620, 302, 0, 456, 844, 1407, 492, 0, 1366, 1739, 0, 705, 0, - 0, 0, 1430, 0, 0, 0, 0, 0, 1749, 1540, 0, 1526, 188, 0, 643, 615, - 0, 100, 1118, 0, 0, 0, 0, 0, 0, 0, 1781, 0, 0, 0, 0, 1533, - 0, 1720, 0, 0, 1748, 0, 0, 676, 0, 0, 0, 210, 401, 0, 0, 0, - 675, 0, 0, 699, 0, 571, 1572, 0, 377, 539, 0, 0, 0, 0, 0, 0, - 0, 0, 448, 0, 690, 0, 0, 846, 0, 422, 0, 0, 0, 548, 0, 0, - 446, 0, 0, 0, 0, 0, 0, 0, 1136, 41, 5, 29, 447, 35, 0, 0, - 0, 857, 1247, 705, 542, 0, 0, 0, 1558, 1669, 0, 0, 0, 1533, 0, 0, - 0, 0, 0, 463, 147, 1283, 0, 0, 183, 0, 690, 0, 0, 1, 0, 0, - 0, 70, 0, 831, 376, 0, 665, 0, 764, 1045, 1461, 0, 917, 0, 863, 0, - 0, 0, 0, 0, 454, 573, 1749, 0, 0, 0, 590, 0, 201, 369, 0, 667, - 0, 645, 0, 0, 682, 0, 293, 0, 0, 0, 0, 1550, 0, 0, 0, 209, - 225, 757, 445, 50, 0, 0, 0, 360, 1127, 562, 0, 0, 670, 0, 289, 0, - 421, 0, 0, 1689, 0, 68, 0, 0, 0, 1712, 102, 0, 0, 0, 1190, 309, - 0, 0, 204, 0, 0, 1590, 209, 0, 0, 82, 0, 0, 0, 1327, 551, 0, - 177, 0, 0, 898, 0, 1512, 825, 0, 757, 0, 0, 0, 468, 1306, 0, 0, - 617, 328, 0, 948, 1633, 416, 0, 462, 0, 0, 0, 1423, 1699, 355, 0, 0, - 0, 1603, 0, 1318, 562, 0, 0, 0, 970, 0, 250, 0, 0, 0, 163, 0, - 0, 1368, 0, 0, 1576, 0, 734, 0, 1047, 0, 0, 180, 0, 0, 190, 64, - 0, 0, 0, 1131, 0, 898, 0, 750, 0, 551, 253, 0, 468, 665, 0, 0, - 0, 926, 705, 0, 637, 357, 371, 0, 14, 148, 635, 0, 693, 1465, 0, 0, - 0, 1621, 156, 0, 1319, 0, 362, 277, 0, 0, 0, 693, 0, 470, 621, 1463, - 329, 0, 997, 0, 190, 1279, 343, 0, 216, 0, 0, 662, 1216, 0, 0, 0, - 1350, 0, 0, 449, 164, 0, 326, 0, 560, 0, 0, 0, 0, 0, 0, 0, - 1620, 0, 0, 0, 97, 1337, 1737, 0, 0, 0, 0, 0, 0, 0, 1436, 1457, - 57, 0, 0, 0, 0, 181, 1206, 0, 0, 321, 0, 194, 843, 1420, 0, 832, - 0, 0, 0, 1539, 777, 362, 1418, 0, 0, 1456, 450, 687, 261, 0, 687, 1255, - 0, 570, 1135, 58, 0, 719, 0, 0, 0, 1767, 901, 493, 0, 0, 0, 495, - 0, 916, 0, 860, 0, 0, 0, 0, 1040, 73, 0, 605, 146, 439, 1462, 198, - 741, 0, 0, 543, 1561, 0, 0, 0, 762, 0, 208, 1478, 0, 0, 1584, 0, - 305, 0, 0, 1774, 489, 610, 773, 1686, 1180, 0, 0, 0, 54, 1503, 1646, 569, - 1777, 292, 1841, 0, 0, 0, 1600, 594, 870, 106, 0, 0, 0, 320, 1565, 0, - 1551, 840, 219, 0, 1425, 861, 0, 0, 0, 219, 266, 0, 632, 739, 491, 1106, - 331, 0, 0, 185, 502, 0, 1565, 0, 0, 1342, 0, 0, 1697, 370, 733, 737, - 723, 0, 8, 1747, 83, 0, 465, 578, 0, 933, 0, 0, 0, 1392, 0, 237, - 749, 0, 746, 0, 0, 0, 1399, 1675, 590, 729, 414, 699, 786, 0, 796, 536, - 647, 399, 0, 0, 0, 41, 228, 1479, 746, 0, 0, 0, 683, 180, 0, 0, - 1125, 0, 709, 829, 0, 1590, 1368, 201, 558, 40, 949, 1805, 930, 0, 1444, 0, - 1071, 297, 772, 0, 623, 0, 0, 842, 0, 0, 0, 92, 0, 1291, 384, 459, - 933, 0, 0, 227, 463, 0, 0, 860, 535, 0, 395, 281, 828, 275, 970, 581, - 0, 1620, 0, 808, 0, 0, 0, 1103, 61, 733, 0, 0, 0, 881, 0, 306, - 0, 0, 0, 225, 199, 0, 0, 0, 0, 0, 1442, 0, 528, 1547, 1197, 349, - 0, 0, 0, 0, 227, 919, 1762, 586, 0, 1167, 0, 714, 0, 679, 904, 839, - 0, 465, 0, 447, 274, 749, 374, 0, 62, 1337, 47, 1359, 0, 1595, 210, 0, - 297, 0, 1632, 0, 511, 1207, 648, 370, 0, 228, 156, 1228, 0, 0, 0, 0, - 461, 0, 0, 1548, 607, 275, 0, 0, 0, 0, 0, 0, 801, 0, 775, 0, - 0, 0, 0, 1416, 401, 1053, 1635, 0, 972, 0, 668, 0, 0, 260, 839, 0, - 0, 56, 1731, 0, 0, 0, 1050, 643, 163, 584, 0, 0, 0, 76, 0, 1623, - 865, 1570, 1829, 0, 0, 413, 459, 1065, 0, 756, 0, 0, 488, 324, 72, 649, - 0, 572, 1248, 0, 1337, 345, 0, 459, 837, 844, 125, 0, 0, 1538, 47, 479, - 423, 0, 638, 690, 378, 0, 1719, 485, 29, 313, 0, 451, 777, 988, 0, 706, - 549, 869, 1591, 0, 1383, 0, 0, 0, 1555, 1007, 235, 0, 269, 720, 560, 931, - 0, 129, 0, 1475, 0, 370, 0, 1719, 816, 307, 0, 599, 548, 1232, 178, 0, - 1464, 0, 1307, 133, 0, 0, 0, 0, 550, 301, 0, 0, 738, 29, 907, 0, - 0, 1445, 83, 569, 0, 0, 0, 197, 0, 284, 0, 0, 0, 0, 506, 790, - 0, 178, 1244, 1721, 1177, 989, 640, 0, 0, 0, 341, 1794, 246, 195, 0, 914, - 886, 532, 1495, 63, 0, 0, 0, 503, 21, 35, 674, 0, 408, 0, 1355, 0, - 989, 454, 1417, 0, 0, 0, 0, 297, 0, 40, 0, 395, 471, 1434, 804, 3, - 0, 0, 317, 0, 596, 0, 1480, 0, 0, 5, 230, 970, 261, 0, 877, 835, - 254, 1332, 0, 791, 0, 66, 0, 0, 0, 39, 0, 235, 0, 776, 323, 152, - 0, 0, 0, 1199, 0, 0, 429, 182, 221, 712, 1636, 1519, 150, 0, 1181, 323, - 753, 0, 1473, 902, 0, 393, 0, 0, 259, 457, 342, 440, 0, 1458, 0, 0, - 547, 789, 624, 1503, 0, 146, 592, 1820, 278, 336, 0, 0, 646, 0, 0, 0, - 467, 108, 517, 0, 267, 160, 388, 1124, 1769, 1409, 1605, 754, 681, 0, 675, 1596, - 619, 794, 23, 471, 0, 0, 0, 0, 0, 0, 0, 269, 1659, 1332, 613, 111, - 209, 0, 0, 123, 842, 161, 106, 0, 148, 191, 0, 0, 1617, 1353, 0, 1058, - 0, 0, 443, 71, 910, 0, 0, 721, 1721, 0, 301, 1721, 785, 0, 1097, 811, - 431, 397, 543, 1454, 0, 0, 1792, 0, 850, 1260, 645, 684, 0, 0, 240, 527, - 0, 803, 0, 1599, 0, 1334, 660, 413, 505, 0, 0, 0, 0, 0, 0, 1377, - 679, 411, 341, 24, 0, 0, 1727, 0, 0, 0, 0, 787, 886, 96, 536, 0, - 24, 0, 1260, 1739, 0, 0, 0, 302, 0, 0, 1614, 978, 0, 541, 484, 267, - 688, 941, 1131, 0, 628, 1832, 0, 0, 433, 0, 0, 494, 0, 0, 603, 325, - 594, 1275, 0, 113, 542, 0, 0, 608, 1287, 155, 1324, 926, 0, 0, 0, 836, - 674, 571, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, - 0, 1793, 0, 27, 0, 1170, 0, 0, 0, 963, 0, 933, 0, 387, 0, 0, - 0, 0, 305, 956, 1783, 0, 0, 776, 418, 0, 0, 0, 0, 240, 0, 473, - 373, 0, 0, 0, 0, 40, 800, 360, 1410, 48, 98, 0, 858, 647, 0, 0, - 91, 675, 374, 1097, 1355, 0, 296, 0, 0, 0, 0, 0, 0, 1518, 1664, 151, - 0, 656, 859, 0, 0, 0, 0, 0, 293, 1797, 0, 778, 580, 420, 0, 396, - 0, 0, 13, 203, 0, 1390, 39, 1797, 628, 552, 0, 189, 0, 97, 830, 325, - 921, 0, 1102, 0, 0, 0, 39, 661, 575, 763, 524, 538, 0, 0, 28, 0, - 662, 0, 1749, 1322, 253, 0, 432, 1178, 85, 51, 0, 0, 0, 1722, 211, 391, - 0, 0, 0, 577, 0, 440, 437, 519, 371, 386, 0, 130, 66, 0, 1182, 788, - 102, 563, 0, 31, 125, 456, 0, 813, 509, 0, 525, 1801, 470, 96, 0, 0, - 936, 488, 546, 702, 142, 0, 0, 1620, 698, 1800, 166, 433, 1346, 179, 1380, 660, - 379, 0, 181, 116, 0, 20, 119, 1033, 0, 0, 0, 1039, 0, 548, 413, 480, - 0, 0, 0, 183, 276, 0, 559, 1019, 53, 520, 0, 0, 1775, 1816, 1809, 0, - 1391, 0, 147, 471, 877, 0, 0, 0, 0, 1723, 0, 0, 1820, 1244, 0, 519, - 1543, 1822, 0, 1600, 315, 1758, 1390, 0, 190, 0, 0, 368, 166, 0, 353, 0, - 0, 0, 107, 0, 0, 0, 1737, 1082, 0, 0, 294, 1130, 273, 0, 1718, 209, - 0, 0, 1802, 1482, 846, 0, 217, 0, 0, 165, 0, 35, 534, 60, 234, 0, - 909, 0, 329, 0, 0, 425, 0, 0, 149, 1185, 904, 315, 0, 635, 1230, 586, - 44, 1316, 0, 0, 847, 1315, 263, 0, 0, 1, 186, 1369, 425, 1751, 0, 0, - 86, 0, 925, 0, 0, 446, 889, 930, 106, 0, 0, 23, 1611, 1474, 0, 0, - 190, 0, 522, 1636, 0, 653, 0, 788, 0, 685, 866, 0, 1371, 696, 851, 441, - 0, 363, 0, 461, 390, 1254, 0, 482, 642, 1508, 141, 652, 54, 1532, 0, 0, - 751, 711, 689, 1431, 140, 1383, 1326, 463, 0, 719, 1129, 0, 0, 0, 0, 533, - 528, 0, 524, 118, 98, 731, 1808, 0, 871, 864, 11, 0, 0, 0, 0, 0, - 396, 611, 327}; + 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 1149, 0, 0, + 456, 706, 0, 1687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 793, 0, 0, 0, 0, 0, 343, 0, 164, 0, 0, 1040, 0, 0, 493, + 0, 0, 1418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1706, 1303, 0, 0, + 0, 0, 1103, 0, 0, 1639, 0, 0, 1314, 0, 0, 1183, 0, 0, 1290, 1141, + 1250, 0, 957, 0, 0, 0, 0, 0, 0, 0, 1048, 0, 1770, 0, 0, 103, + 0, 0, 1751, 0, 0, 0, 0, 792, 0, 0, 0, 387, 1547, 0, 13, 0, + 0, 0, 0, 0, 0, 1516, 0, 0, 0, 0, 917, 0, 138, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 954, 0, 793, 915, 0, 0, 0, 0, 81, 0, + 1578, 0, 0, 594, 0, 202, 1737, 0, 0, 0, 0, 0, 1482, 0, 54, 401, + 1258, 248, 0, 0, 0, 574, 0, 1732, 27, 0, 0, 766, 810, 0, 0, 0, + 0, 427, 0, 0, 0, 1718, 455, 0, 753, 0, 0, 0, 0, 944, 0, 968, + 0, 1613, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1374, 0, 0, 13, 351, 0, 0, 0, 0, 0, 285, 0, 843, 400, 0, 1342, + 222, 780, 0, 0, 0, 0, 403, 0, 919, 0, 1769, 0, 0, 661, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 152, 410, 0, 336, 838, 0, 366, 403, + 0, 0, 0, 0, 1455, 466, 0, 1381, 886, 914, 896, 1292, 0, 46, 0, 0, + 958, 889, 927, 1532, 0, 0, 0, 607, 273, 690, 1546, 0, 0, 681, 0, 0, + 0, 0, 0, 1423, 645, 0, 0, 690, 847, 1309, 0, 0, 0, 804, 0, 0, + 0, 1153, 0, 625, 0, 0, 1417, 0, 0, 1560, 138, 798, 0, 0, 1022, 0, + 1702, 0, 1707, 1017, 0, 0, 0, 0, 0, 0, 0, 0, 1718, 0, 0, 0, + 0, 1207, 116, 0, 0, 756, 0, 413, 0, 456, 0, 1491, 0, 0, 0, 0, + 1355, 1018, 0, 0, 0, 392, 0, 0, 0, 0, 642, 823, 0, 0, 505, 838, + 0, 1113, 0, 0, 0, 0, 0, 496, 1185, 0, 462, 347, 1212, 1035, 1635, 0, + 0, 0, 0, 381, 0, 0, 484, 0, 0, 0, 0, 225, 0, 0, 0, 279, + 499, 568, 0, 1428, 0, 481, 749, 927, 1347, 0, 0, 0, 1724, 1077, 861, 827, + 1544, 0, 0, 0, 560, 0, 0, 0, 507, 319, 226, 1113, 733, 0, 0, 275, + 1181, 0, 214, 0, 0, 90, 0, 171, 405, 0, 828, 0, 0, 0, 356, 0, + 34, 0, 0, 1438, 1232, 0, 1722, 726, 0, 502, 0, 0, 0, 0, 0, 0, + 63, 71, 812, 442, 0, 0, 0, 0, 0, 0, 292, 962, 1764, 1311, 0, 1371, + 159, 0, 0, 0, 0, 0, 0, 0, 926, 1039, 1490, 1230, 0, 460, 1382, 1680, + 0, 732, 0, 1172, 0, 0, 1748, 0, 0, 0, 0, 1184, 0, 799, 1403, 119, + 563, 0, 1406, 285, 883, 0, 486, 10, 0, 681, 114, 1253, 1459, 0, 0, 0, + 209, 1028, 1338, 0, 0, 0, 0, 0, 1262, 0, 0, 0, 0, 1452, 0, 750, + 0, 0, 1342, 1081, 0, 1045, 0, 0, 0, 0, 617, 185, 0, 0, 353, 0, + 0, 404, 454, 1719, 194, 0, 164, 0, 0, 0, 0, 1560, 1339, 0, 0, 44, + 0, 767, 0, 0, 0, 0, 603, 0, 851, 762, 196, 854, 500, 809, 0, 0, + 1579, 155, 0, 493, 1620, 0, 0, 846, 1214, 0, 0, 1458, 810, 0, 160, 0, + 105, 523, 379, 1619, 0, 1164, 0, 0, 0, 0, 0, 0, 90, 0, 822, 0, + 0, 437, 0, 376, 339, 825, 679, 122, 1094, 0, 0, 0, 82, 488, 0, 896, + 0, 877, 297, 0, 0, 1556, 1764, 1211, 0, 482, 653, 704, 0, 0, 54, 1554, + 0, 0, 160, 0, 0, 0, 515, 0, 1136, 0, 1043, 0, 0, 1330, 1168, 0, + 1020, 0, 109, 0, 311, 0, 666, 691, 0, 0, 0, 0, 718, 1525, 0, 1132, + 0, 0, 187, 798, 1102, 0, 683, 0, 0, 420, 0, 0, 1427, 107, 0, 905, + 0, 1196, 0, 1358, 918, 0, 0, 49, 523, 282, 761, 1226, 1051, 0, 451, 0, + 1021, 700, 1659, 0, 0, 540, 455, 0, 881, 0, 0, 0, 1573, 0, 0, 0, + 0, 0, 0, 881, 0, 1547, 194, 0, 1151, 327, 70, 692, 0, 0, 0, 0, + 0, 900, 0, 441, 800, 0, 676, 637, 0, 0, 970, 402, 880, 318, 0, 0, + 0, 0, 1327, 0, 0, 0, 1752, 0, 0, 388, 312, 541, 425, 0, 1109, 0, + 594, 1737, 0, 1360, 48, 0, 1382, 492, 1134, 471, 1073, 548, 0, 0, 0, 0, + 0, 0, 1245, 0, 264, 0, 0, 937, 0, 130, 725, 0, 1237, 803, 451, 29, + 470, 694, 1583, 354, 0, 167, 520, 1516, 1110, 335, 191, 1489, 1540, 76, 824, 0, + 213, 1482, 0, 0, 1546, 0, 0, 394, 748, 450, 0, 259, 695, 0, 0, 534, + 244, 6, 635, 1722, 1085, 30, 1728, 884, 868, 0, 0, 207, 171, 1034, 293, 468, + 441, 1699, 1600, 1704, 40, 797, 67, 1302, 687, 555, 0, 1530, 788, 1765, 0, 506, + 313, 0, 1253, 1002, 498, 0, 0, 0, 93, 0, 0, 0, 0, 0, 1735, 0, + 0, 0, 659, 0, 835, 0, 0, 1477, 464, 772, 0, 0, 305, 197, 0, 0, + 249, 0, 0, 0, 226, 0, 604, 1291, 0, 541, 1213, 1208, 0, 0, 0, 83, + 548, 0, 0, 0, 9, 0, 124, 561, 0, 540, 446, 1089, 552, 0, 1401, 246, + 711, 1663, 823, 1128, 497, 776, 7, 444, 0, 439, 1515, 398, 710, 1111, 0, 517, + 0, 0, 883, 0, 649, 1071, 0, 380, 0, 0, 0, 0, 0, 1642, 113, 1473, + 15, 59, 0, 0, 702, 1587, 1517, 0, 671, 0, 0, 607, 0, 0, 0, 1487, + 0, 1615, 0, 1089, 0, 614, 286, 0, 863, 356, 0, 0, 445, 702, 428, 0, + 1, 1699, 0, 535, 0, 0, 0, 0, 36, 475, 0, 0, 0, 0, 673, 1351, + 0, 0, 522, 0, 547, 0, 0, 0, 0, 0, 891, 0, 0, 0, 294, 1766, + 225, 243, 584, 1031, 0, 1173, 539, 81, 317, 215, 0, 1072, 0, 0, 562, 0, + 0, 526, 128, 1186, 0, 0, 0, 0, 0, 0, 1726, 133, 0, 0, 0, 0, + 376, 585, 12, 196, 1672, 0, 0, 206, 200, 669, 6, 0, 100, 484, 652, 0, + 624, 0, 427, 1202, 0, 429, 235, 723, 0, 1656, 195, 862, 0, 0, 0, 0, + 1364, 0, 20, 0, 1297, 286, 1404, 850, 652, 87, 1322, 149, 0, 0, 113, 0, + 0, 0, 765, 333, 0, 0, 0, 389, 556, 639, 0, 1639, 1734, 1763, 1602, 718, + 0, 409, 0, 403, 1478, 0, 0, 479, 0, 853, 0, 0, 649, 1754, 1161, 1706, + 1186, 0, 620, 327, 0, 0, 970, 0, 95, 562, 0, 921, 0, 0, 0, 1686, + 1127, 75, 991, 0, 829, 830, 0, 122, 0, 787, 0, 1730, 0, 1009, 0, 689, + 0, 484, 0, 240, 644, 0, 0, 138, 106, 0, 0, 0, 530, 230, 390, 0, + 0, 1279, 0, 0, 0, 0, 0, 361, 401, 0, 1238, 89, 1446, 1603, 1133, 1067, + 731, 332, 644, 270, 734, 0, 1702, 1550, 0, 1542, 447, 742, 0, 0, 1516, 478, + 1691, 304, 0, 0, 0, 636, 0, 0, 221, 70, 0, 0, 372, 0, 493, 747, + 792, 0, 0, 295, 907, 1435, 940, 784, 0, 0, 392, 320, 1169, 0, 1272, 1203, + 844, 0, 0, 112, 0, 0, 1764, 0, 0, 1037, 0, 307, 0, 0, 0, 168, + 0, 1668, 0, 0, 168, 369, 0, 668, 0, 677, 559, 478, 0, 0, 0, 301, + 0, 516, 0, 884, 983, 0, 1019, 1356, 0, 897, 169, 1761, 436, 352, 24, 0, + 730, 1418, 0, 588, 0, 748, 466, 0, 0, 250, 0, 0, 567, 14, 0, 231, + 0, 0, 528, 0, 0, 0, 291, 1449, 1153, 1124, 723, 634, 0, 0, 0, 687, + 483, 44, 1240, 163, 158, 0, 1709, 1423, 431, 646, 587, 0, 1611, 444, 775, 0, + 288, 0, 0, 545, 0, 1747, 345, 0, 1328, 0, 251, 0, 639, 310, 1412, 0, + 0, 0, 0, 0, 666, 1325, 629, 1469, 682, 474, 237, 186, 18, 740, 762, 1534, + 1445, 0, 460, 0, 854, 1578, 459, 869, 398, 211, 808, 752, 0, 0, 0, 1042, + 936, 477, 0, 83, 116, 741, 773, 0, 0, 788, 697, 0, 10, 0, 685, 116, + 239, 426, 0, 87, 0, 0, 617, 454, 61, 0, 0, 0, 551, 192, 0, 803, + 329, 1481, 1284, 0, 381, 0, 569, 1091, 0, 0, 274, 76, 300, 970, 938, 0, + 0, 628, 0, 624, 0, 742, 1450, 942, 1205, 0, 557, 505, 654, 1732, 91, 254, + 0, 801, 0, 0, 0, 17, 0, 292, 47, 0, 1525, 1284, 570, 0, 344, 110, + 524, 1590, 0, 1043, 344, 1320, 688, 735, 0, 713, 232, 721, 0, 677, 0, 0, + 194, 746, 669, 183, 72, 1298, 0, 425, 1408, 374, 195, 0, 594, 619, 705, 1373, + 709, 45, 1424, 0, 0, 0, 876, 0, 0, 0, 0, 0, 699, 0, 1110, 915, + 992, 0, 0, 356, 36, 859, 564, 598, 1367, 0, 581, 0, 488, 0, 1062, 978, + 0, 0, 671, 0, 23, 1453, 179, 68, 842, 656, 1042, 467, 72, 335, 845, 487, + 0, 0, 205, 1575, 0, 1619, 0, 0, 1702, 304, 903, 0, 796, 0, 0, 1672, + 999, 1649, 651, 145, 0, 710, 928, 1200, 0, 0, 0, 455, 632, 140, 216, 392, + 0, 0, 0, 1282, 45, 1041, 811, 11, 191, 0, 0, 681, 234, 973, 0, 0, + 1646, 1661, 451, 278, 1664, 605, 0, 526, 794, 0, 0, 1685, 4, 363, 430, 0, + 0, 931, 5, 0, 792, 1743, 1635, 18, 489, 0, 0, 0, 1007, 1213, 834, 1335, + 468, 437, 657, 0, 0, 0, 1593, 109, 0, 0, 0, 1547, 539, 0, 218, 166, + 310, 35, 898, 409, 667, 143, 0, 0, 1607, 1495, 706, 26, 368, 0, 1208, 584, + 0, 1102, 101, 634, 25, 0, 0, 708, 188, 79, 317, 458, 612, 0, 1117, 72, + 571, 817, 0, 428, 924, 257, 0, 358, 0, 1284, 0, 553, 110, 1247, 1331, 0, + 0, 280, 0, 841, 189, 545, 0, 30, 78, 508, 0, 1085, 715, 0, 0, 0, + 0, 1733, 1475, 0, 947, 128, 552, 522, 813, 1167, 629, 0, 1709, 1568, 0, 0, + 561, 0, 1525, 302, 0, 1357, 0, 0, 847, 192, 295, 1712, 976, 0, 0, 311, + 385, 415, 0, 992, 203, 0, 492, 156, 0, 0, 1529}; int MangledHashG(const char *key, const int *T) { @@ -157,7 +152,7 @@ int MangledHashG(const char *key, const int *T) for (int i = 0; key[i] != '\0'; i++) { sum += T[i] * key[i]; - sum %= 1843; + sum %= 1771; } return mangledkG[sum]; } @@ -167,28 +162,30 @@ int MangledPerfectHash(const char *key) if (strlen(key) > 37) return 0; - return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 1843; + return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 1771; } -constexpr int unmangledkT1[] = {251, 151, 0, 67, 201, 177, 166, 257, 159, 258, 23, 184, 66, - 72, 92, 120, 59, 260, 28, 154, 231, 254, 14, 227, 170, 122}; -constexpr int unmangledkT2[] = {133, 59, 252, 260, 115, 215, 113, 130, 157, 70, 104, 114, 55, - 141, 226, 45, 149, 63, 92, 170, 250, 2, 63, 20, 109, 225}; +constexpr int unmangledkT1[] = {234, 82, 236, 241, 204, 259, 135, 243, 176, 9, 126, 15, 233, + 194, 122, 165, 120, 259, 187, 65, 109, 198, 164, 172, 198, 48}; +constexpr int unmangledkT2[] = {89, 54, 249, 247, 226, 241, 94, 261, 73, 55, 26, 165, 206, + 74, 12, 62, 286, 77, 258, 188, 149, 38, 141, 242, 244, 167}; constexpr int unmangledkG[] = { - 0, 0, 0, 0, 0, 0, 0, 8, 59, 0, 39, 0, 0, 0, 3, 245, 47, 0, 0, - 8, 62, 24, 0, 0, 0, 0, 121, 254, 0, 0, 0, 91, 232, 0, 217, 62, 0, 119, - 24, 0, 21, 42, 0, 0, 0, 63, 70, 0, 117, 26, 204, 0, 0, 89, 88, 0, 0, - 0, 0, 220, 96, 0, 21, 0, 46, 0, 0, 0, 74, 62, 256, 0, 30, 39, 138, 0, - 138, 0, 73, 0, 61, 4, 103, 0, 0, 118, 79, 59, 0, 0, 0, 0, 0, 51, 0, - 238, 125, 0, 0, 0, 40, 149, 41, 0, 0, 58, 77, 30, 28, 205, 0, 2, 0, 0, - 204, 0, 80, 153, 130, 107, 0, 0, 25, 1, 56, 0, 254, 135, 57, 0, 0, 0, 129, - 0, 106, 0, 206, 64, 0, 0, 0, 49, 126, 69, 100, 53, 132, 0, 0, 6, 64, 124, - 0, 24, 4, 30, 71, 0, 11, 72, 0, 73, 77, 207, 61, 0, 252, 0, 0, 155, 105, - 2, 52, 221, 127, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 159, 21, 0, 0, 224, - 240, 91, 124, 56, 206, 149, 138, 0, 7, 0, 170, 236, 81, 105, 186, 0, 175, 30, 74, - 0, 73, 0, 0, 68, 0, 0, 142, 80, 9, 166, 210, 104, 0, 85, 0, 256, 0, 53, - 46, 0, 51, 128, 255, 0, 5, 19, 0, 19, 216, 15, 0, 145, 31, 0, 0, 59, 255, - 147, 218, 0, 0, 0, 61, 7, 160, 1, 240, 0, 65, 87, 0}; + 0, 0, 0, 0, 0, 0, 76, 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 132, 231, 0, 75, 0, 0, 267, 24, 0, 0, 229, 0, 96, 0, 91, + 26, 109, 0, 225, 116, 0, 0, 167, 0, 170, 219, 0, 0, 0, 48, 0, 0, 0, + 0, 137, 134, 201, 0, 0, 0, 20, 110, 37, 0, 0, 0, 140, 0, 163, 0, 57, + 0, 0, 0, 0, 0, 0, 172, 0, 131, 247, 7, 0, 80, 0, 0, 198, 41, 79, + 229, 0, 91, 0, 107, 0, 105, 131, 0, 0, 206, 0, 0, 70, 0, 0, 0, 229, + 110, 32, 0, 0, 145, 78, 84, 0, 212, 140, 0, 98, 3, 19, 138, 62, 219, 243, + 86, 62, 155, 0, 0, 0, 0, 0, 78, 222, 127, 177, 194, 0, 0, 0, 0, 31, + 0, 22, 0, 0, 62, 0, 0, 64, 5, 93, 0, 0, 123, 145, 0, 12, 0, 279, + 0, 20, 149, 0, 0, 0, 0, 40, 35, 0, 253, 0, 171, 0, 0, 0, 31, 279, + 85, 281, 49, 73, 0, 51, 19, 51, 0, 89, 24, 0, 39, 0, 0, 273, 0, 0, + 0, 0, 216, 252, 32, 266, 42, 7, 0, 245, 69, 16, 0, 0, 82, 222, 43, 36, + 0, 0, 214, 128, 0, 27, 102, 101, 28, 37, 71, 279, 35, 0, 198, 0, 43, 267, + 0, 0, 0, 58, 0, 165, 224, 0, 0, 0, 29, 95, 0, 4, 0, 182, 228, 45, + 55, 0, 160, 0, 0, 71, 0, 270, 0, 0, 150, 4, 0, 0, 90, 94, 19, 2, + 23, 131, 0, 252, 24, 26, 0, 0, 0, 0, 228, 0, 0, 272, 35, 125, 146, 173}; int UnmangledHashG(const char *key, const int *T) { @@ -197,7 +194,7 @@ int UnmangledHashG(const char *key, const int *T) for (int i = 0; key[i] != '\0'; i++) { sum += T[i] * key[i]; - sum %= 261; + sum %= 288; } return unmangledkG[sum]; } @@ -207,7 +204,7 @@ int UnmangledPerfectHash(const char *key) if (strlen(key) > 26) return 0; - return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 261; + return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 288; } } // namespace diff --git a/src/compiler/translator/ImmutableString_autogen.cpp b/src/compiler/translator/ImmutableString_autogen.cpp index 5964d687aa..1c50c40425 100644 --- a/src/compiler/translator/ImmutableString_autogen.cpp +++ b/src/compiler/translator/ImmutableString_autogen.cpp @@ -2,7 +2,7 @@ // Generated by gen_builtin_symbols.py using data from builtin_variables.json and // builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // diff --git a/src/compiler/translator/ParseContext_ESSL_autogen.h b/src/compiler/translator/ParseContext_ESSL_autogen.h index c7cacbdf40..3dfde377af 100644 --- a/src/compiler/translator/ParseContext_ESSL_autogen.h +++ b/src/compiler/translator/ParseContext_ESSL_autogen.h @@ -2,7 +2,7 @@ // Generated by gen_builtin_symbols.py using data from builtin_variables.json and // builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // diff --git a/src/compiler/translator/ParseContext_complete_autogen.h b/src/compiler/translator/ParseContext_complete_autogen.h index 84e1751489..214b356be1 100644 --- a/src/compiler/translator/ParseContext_complete_autogen.h +++ b/src/compiler/translator/ParseContext_complete_autogen.h @@ -2,7 +2,7 @@ // Generated by gen_builtin_symbols.py using data from builtin_variables.json and // builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // diff --git a/src/compiler/translator/ShaderLang.cpp b/src/compiler/translator/ShaderLang.cpp index 01f5f6a9f5..e941d0946a 100644 --- a/src/compiler/translator/ShaderLang.cpp +++ b/src/compiler/translator/ShaderLang.cpp @@ -23,6 +23,9 @@ namespace sh { +// EXT_shader_framebuffer_fetch / EXT_shader_framebuffer_fetch_non_coherent +const char kInputAttachmentName[] = "ANGLEInputAttachment"; + namespace { diff --git a/src/compiler/translator/ShaderVars.cpp b/src/compiler/translator/ShaderVars.cpp index 3cebc70d17..8ad5a03270 100644 --- a/src/compiler/translator/ShaderVars.cpp +++ b/src/compiler/translator/ShaderVars.cpp @@ -45,6 +45,7 @@ ShaderVariable::ShaderVariable(GLenum typeIn) offset(-1), readonly(false), writeonly(false), + isFragmentInOut(false), index(-1), interpolation(INTERPOLATION_SMOOTH), isInvariant(false), @@ -76,6 +77,7 @@ ShaderVariable::ShaderVariable(const ShaderVariable &other) offset(other.offset), readonly(other.readonly), writeonly(other.writeonly), + isFragmentInOut(other.isFragmentInOut), index(other.index), interpolation(other.interpolation), isInvariant(other.isInvariant), @@ -101,6 +103,7 @@ ShaderVariable &ShaderVariable::operator=(const ShaderVariable &other) offset = other.offset; readonly = other.readonly; writeonly = other.writeonly; + isFragmentInOut = other.isFragmentInOut; index = other.index; interpolation = other.interpolation; isInvariant = other.isInvariant; @@ -117,7 +120,7 @@ bool ShaderVariable::operator==(const ShaderVariable &other) const binding != other.binding || imageUnitFormat != other.imageUnitFormat || offset != other.offset || readonly != other.readonly || writeonly != other.writeonly || index != other.index || interpolation != other.interpolation || - isInvariant != other.isInvariant) + isInvariant != other.isInvariant || isFragmentInOut != other.isFragmentInOut) { return false; } diff --git a/src/compiler/translator/SymbolTable_ESSL_autogen.cpp b/src/compiler/translator/SymbolTable_ESSL_autogen.cpp index 29b595a615..a88ebc5462 100644 --- a/src/compiler/translator/SymbolTable_ESSL_autogen.cpp +++ b/src/compiler/translator/SymbolTable_ESSL_autogen.cpp @@ -2,7 +2,7 @@ // Generated by gen_builtin_symbols.py using data from builtin_variables.json and // builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // @@ -913,6 +913,12 @@ constexpr const TSymbolUniqueId BuiltInId::memoryBarrierShared; constexpr const TSymbolUniqueId BuiltInId::groupMemoryBarrier; constexpr const TSymbolUniqueId BuiltInId::EmitVertex; constexpr const TSymbolUniqueId BuiltInId::EndPrimitive; +constexpr const TSymbolUniqueId BuiltInId::subpassLoad_SubpassInput1; +constexpr const TSymbolUniqueId BuiltInId::subpassLoad_ISubpassInput1; +constexpr const TSymbolUniqueId BuiltInId::subpassLoad_USubpassInput1; +constexpr const TSymbolUniqueId BuiltInId::subpassLoad_SubpassInputMS1_Int1; +constexpr const TSymbolUniqueId BuiltInId::subpassLoad_ISubpassInputMS1_Int1; +constexpr const TSymbolUniqueId BuiltInId::subpassLoad_USubpassInputMS1_Int1; constexpr const TSymbolUniqueId BuiltInId::gl_DepthRangeParameters; constexpr const TSymbolUniqueId BuiltInId::gl_DepthRange; constexpr const TSymbolUniqueId BuiltInId::gl_MaxVertexAttribs; @@ -1003,7 +1009,7 @@ constexpr const TSymbolUniqueId BuiltInId::gl_PerVertexOutBlock; constexpr const TSymbolUniqueId BuiltInId::gl_PositionGS; constexpr const TSymbolUniqueId BuiltInId::gl_ViewID_OVR; -const int TSymbolTable::kLastBuiltInId = 3338; +const int TSymbolTable::kLastBuiltInId = 3350; namespace BuiltInName { @@ -1206,6 +1212,7 @@ constexpr const ImmutableString sinh("sinh"); constexpr const ImmutableString smoothstep("smoothstep"); constexpr const ImmutableString sqrt("sqrt"); constexpr const ImmutableString step("step"); +constexpr const ImmutableString subpassLoad("subpassLoad"); constexpr const ImmutableString tan("tan"); constexpr const ImmutableString tanh("tanh"); constexpr const ImmutableString texelFetch("texelFetch"); @@ -1681,6 +1688,41 @@ constexpr const TVariable kpt01J(BuiltInId::pt01J, SymbolType::BuiltIn, TExtension::UNDEFINED, StaticType::Get()); +constexpr const TVariable kpt01i(BuiltInId::pt01i, + BuiltInName::_empty, + SymbolType::BuiltIn, + TExtension::UNDEFINED, + StaticType::Get()); +constexpr const TVariable kpt01j( + BuiltInId::pt01j, + BuiltInName::_empty, + SymbolType::BuiltIn, + TExtension::UNDEFINED, + StaticType::Get()); +constexpr const TVariable kpt01k( + BuiltInId::pt01k, + BuiltInName::_empty, + SymbolType::BuiltIn, + TExtension::UNDEFINED, + StaticType::Get()); +constexpr const TVariable kpt01l( + BuiltInId::pt01l, + BuiltInName::_empty, + SymbolType::BuiltIn, + TExtension::UNDEFINED, + StaticType::Get()); +constexpr const TVariable kpt01m( + BuiltInId::pt01m, + BuiltInName::_empty, + SymbolType::BuiltIn, + TExtension::UNDEFINED, + StaticType::Get()); +constexpr const TVariable kpt01n( + BuiltInId::pt01n, + BuiltInName::_empty, + SymbolType::BuiltIn, + TExtension::UNDEFINED, + StaticType::Get()); constexpr const TVariable kpt10B(BuiltInId::pt10B, BuiltInName::_empty, SymbolType::BuiltIn, @@ -2349,6 +2391,12 @@ constexpr const TVariable *p01I20D30D[3] = {&BuiltInVariable::kpt01I, &BuiltInVa &BuiltInVariable::kpt30D}; constexpr const TVariable *p01J20D30E[3] = {&BuiltInVariable::kpt01J, &BuiltInVariable::kpt20D, &BuiltInVariable::kpt30E}; +constexpr const TVariable *p01i[1] = {&BuiltInVariable::kpt01i}; +constexpr const TVariable *p01j[1] = {&BuiltInVariable::kpt01j}; +constexpr const TVariable *p01k[1] = {&BuiltInVariable::kpt01k}; +constexpr const TVariable *p01l00D[2] = {&BuiltInVariable::kpt01l, &BuiltInVariable::kpt00D}; +constexpr const TVariable *p01m00D[2] = {&BuiltInVariable::kpt01m, &BuiltInVariable::kpt00D}; +constexpr const TVariable *p01n00D[2] = {&BuiltInVariable::kpt01n, &BuiltInVariable::kpt00D}; constexpr const TVariable *p10B00B00B[3] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B}; constexpr const TVariable *p10B10B00B[3] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B, @@ -9930,6 +9978,58 @@ constexpr const TFunction EndPrimitive_(BuiltInId::EndPrimitive, StaticType::Get(), EOpEndPrimitive, false); +constexpr const TFunction subpassLoad_01i( + BuiltInId::subpassLoad_SubpassInput1, + BuiltInName::subpassLoad, + TExtension::UNDEFINED, + BuiltInParameters::p01i, + 1, + StaticType::Get(), + EOpCallBuiltInFunction, + false); +constexpr const TFunction subpassLoad_01j(BuiltInId::subpassLoad_ISubpassInput1, + BuiltInName::subpassLoad, + TExtension::UNDEFINED, + BuiltInParameters::p01j, + 1, + StaticType::Get(), + EOpCallBuiltInFunction, + false); +constexpr const TFunction subpassLoad_01k(BuiltInId::subpassLoad_USubpassInput1, + BuiltInName::subpassLoad, + TExtension::UNDEFINED, + BuiltInParameters::p01k, + 1, + StaticType::Get(), + EOpCallBuiltInFunction, + false); +constexpr const TFunction subpassLoad_01l00D( + BuiltInId::subpassLoad_SubpassInputMS1_Int1, + BuiltInName::subpassLoad, + TExtension::UNDEFINED, + BuiltInParameters::p01l00D, + 2, + StaticType::Get(), + EOpCallBuiltInFunction, + false); +constexpr const TFunction subpassLoad_01m00D( + BuiltInId::subpassLoad_ISubpassInputMS1_Int1, + BuiltInName::subpassLoad, + TExtension::UNDEFINED, + BuiltInParameters::p01m00D, + 2, + StaticType::Get(), + EOpCallBuiltInFunction, + false); +constexpr const TFunction subpassLoad_01n00D( + BuiltInId::subpassLoad_USubpassInputMS1_Int1, + BuiltInName::subpassLoad, + TExtension::UNDEFINED, + BuiltInParameters::p01n00D, + 2, + StaticType::Get(), + EOpCallBuiltInFunction, + false); } // namespace Func @@ -10273,6 +10373,8 @@ constexpr SymbolRule kRules[] = { Rule::Get(&TableBase::m_gl_MaxFragmentImageUniforms), Rule::Get(&normalize_00B), Rule::Get(&normalize_00B), + Rule::Get(&subpassLoad_01m00D), + Rule::Get(&subpassLoad_01m00D), Rule::Get(&textureOffset_00I10B10D), Rule::Get(&textureOffset_00I10B10D), Rule::Get(&atomicExchange_00E00E), @@ -10307,8 +10409,12 @@ constexpr SymbolRule kRules[] = { Rule::Get(&floatBitsToUint_10B), Rule::Get(&textureLod_00J20B00B), Rule::Get(&textureLod_00J20B00B), + Rule::Get(&subpassLoad_01i), + Rule::Get(&subpassLoad_01i), Rule::Get(&sqrt_10B), Rule::Get(&sqrt_10B), + Rule::Get(&subpassLoad_01k), + Rule::Get(&subpassLoad_01k), Rule::Get(&textureProjLod_00S30B00B), Rule::Get(&textureProjLod_00S30B00B), Rule::Get(&clamp_20E20E20E), @@ -10418,6 +10524,8 @@ constexpr SymbolRule kRules[] = { Rule::Get(&findMSB_10E), Rule::Get(&findMSB_10D), Rule::Get(&findMSB_10D), + Rule::Get(&subpassLoad_01j), + Rule::Get(&subpassLoad_01j), Rule::Get(&dot_00B00B), Rule::Get(&dot_00B00B), Rule::Get(&asinh_20B), @@ -10546,6 +10654,8 @@ constexpr SymbolRule kRules[] = { Rule::Get(&outerProduct_20B20B), Rule::Get(&atan_30B30B), Rule::Get(&atan_30B30B), + Rule::Get(&TableBase::m_gl_MaxFragmentAtomicCounterBuffers), + Rule::Get(&TableBase::m_gl_MaxFragmentAtomicCounterBuffers), Rule::Get(&unpackSnorm4x8_00E), Rule::Get(&unpackSnorm4x8_00E), Rule::Get(&bitCount_30E), @@ -10707,6 +10817,8 @@ constexpr SymbolRule kRules[] = { Rule::Get(&sinh_20B), Rule::Get(&textureGather_00L20B), Rule::Get(&textureGather_00L20B), + Rule::Get( + &TableBase::m_gl_MaxGeometryTotalOutputComponents), Rule::Get(&reflect_30B30B), Rule::Get(&reflect_30B30B), Rule::Get(&outerProduct_30B20B), @@ -10875,8 +10987,8 @@ constexpr SymbolRule kRules[] = { Rule::Get(&sqrt_00B), Rule::Get(&normalize_20B), Rule::Get(&normalize_20B), - Rule::Get(&TableBase::m_gl_MaxFragmentAtomicCounterBuffers), - Rule::Get(&TableBase::m_gl_MaxFragmentAtomicCounterBuffers), + Rule::Get(&subpassLoad_01n00D), + Rule::Get(&subpassLoad_01n00D), Rule::Get(&BuiltInVariable::kgl_WorkGroupID), Rule::Get(&BuiltInVariable::kgl_WorkGroupID), Rule::Get(°rees_00B), @@ -11269,8 +11381,8 @@ constexpr SymbolRule kRules[] = { Rule::Get(&transpose_60B), Rule::Get(&findMSB_00D), Rule::Get(&findMSB_00D), - Rule::Get( - &TableBase::m_gl_MaxGeometryTotalOutputComponents), + Rule::Get(&subpassLoad_01l00D), + Rule::Get(&subpassLoad_01l00D), Rule::Get(&acosh_30B), Rule::Get(&acosh_30B), Rule::Get(&findMSB_00E), @@ -11947,6 +12059,7 @@ constexpr const char *kMangledNames[] = {"textureProj(00R30B00B", "textureSize(00R00D", "gl_MaxFragmentImageUniforms", "normalize(00B", + "subpassLoad(01m00D", "textureOffset(00I10B10D", "atomicExchange(00E00E", "textureProj(00I30B00B", @@ -11964,7 +12077,9 @@ constexpr const char *kMangledNames[] = {"textureProj(00R30B00B", "reflect(10B10B", "floatBitsToUint(10B", "textureLod(00J20B00B", + "subpassLoad(01i", "sqrt(10B", + "subpassLoad(01k", "textureProjLod(00S30B00B", "clamp(20E20E20E", "atomicAnd(00E00E", @@ -12020,6 +12135,7 @@ constexpr const char *kMangledNames[] = {"textureProj(00R30B00B", "length(10B", "findMSB(10E", "findMSB(10D", + "subpassLoad(01j", "dot(00B00B", "asinh(20B", "dot(30B30B", @@ -12086,6 +12202,7 @@ constexpr const char *kMangledNames[] = {"textureProj(00R30B00B", "texelFetch(00V10D00D", "outerProduct(20B20B", "atan(30B30B", + "gl_MaxFragmentAtomicCounterBuffers", "unpackSnorm4x8(00E", "bitCount(30E", "textureProjLodOffset(00R20B00B10D", @@ -12166,6 +12283,7 @@ constexpr const char *kMangledNames[] = {"textureProj(00R30B00B", "textureProjLodOffset(00S30B00B20D", "sinh(20B", "textureGather(00L20B", + "gl_MaxGeometryTotalOutputComponents", "reflect(30B30B", "outerProduct(30B20B", "texture(00U20B00B", @@ -12252,7 +12370,7 @@ constexpr const char *kMangledNames[] = {"textureProj(00R30B00B", "gl_MaxVertexImageUniforms", "sqrt(00B", "normalize(20B", - "gl_MaxFragmentAtomicCounterBuffers", + "subpassLoad(01n00D", "gl_WorkGroupID", "degrees(00B", "inverse(F0B", @@ -12454,7 +12572,7 @@ constexpr const char *kMangledNames[] = {"textureProj(00R30B00B", "textureOffset(00Y20B20D", "transpose(60B", "findMSB(00D", - "gl_MaxGeometryTotalOutputComponents", + "subpassLoad(01l00D", "acosh(30B", "findMSB(00E", "bitfieldExtract(20E00D00D", @@ -12887,774 +13005,780 @@ constexpr uint16_t kMangledOffsets[] = { 312, // textureSize_00R00D 314, // gl_MaxFragmentImageUniforms 316, // normalize_00B - 318, // textureOffset_00I10B10D - 320, // atomicExchange_00E00E - 322, // textureProj_00I30B00B - 324, // acosh_10B - 326, // gl_MaxCombinedShaderOutputResources - 328, // atomicOr_00E00E - 330, // min_20B00B - 332, // textureProj_00M30B00B - 333, // atomicMax_00D00D - 335, // textureProj_00M20B - 336, // texture_00I10B00B - 338, // reflect_00B00B - 340, // mod_20B00B - 342, // lessThan_20D20D - 344, // reflect_10B10B - 346, // floatBitsToUint_10B - 348, // textureLod_00J20B00B - 350, // sqrt_10B - 352, // textureProjLod_00S30B00B - 354, // clamp_20E20E20E - 356, // atomicAnd_00E00E - 358, // max_20D00D - 360, // textureSize_00I00D - 362, // gl_MaxComputeAtomicCounterBuffers - 364, // gl_PrimitiveIDIn - 365, // texelFetchOffset_00R10D00D10D - 367, // isinf_30B - 369, // textureGatherOffset_00a20B10D00D - 371, // lessThan_30B30B - 373, // textureGatherOffset_00I10B10D - 375, // textureOffset_00L20B10D00B - 377, // textureLodOffset_00X10B00B10D - 379, // texture_00T20B00B - 381, // textureOffset_00L20B10D - 383, // lessThanEqual_30E30E - 385, // textureOffset_00J20B20D00B - 387, // min_10E00E - 389, // log_30B - 391, // atomicCounter_00G - 393, // textureProjOffset_00S30B20D - 395, // imageLoad_01I20D - 396, // round_00B - 398, // smoothstep_00B00B20B - 400, // imageLoad_01H20D - 401, // textureGather_00K20B - 403, // bitfieldInsert_30D30D00D00D - 405, // imageStore_01G20D30E - 406, // fwidth_10B - 409, // textureProjLod_00R20B00B - 411, // notEqual_30D30D - 413, // refract_10B10B00B - 415, // textureProjOffset_00I20B10D - 417, // greaterThan_30D30D - 419, // greaterThan_10D10D - 421, // texture_00U20B - 423, // textureSize_00a00D - 425, // bitfieldExtract_10E00D00D - 427, // gl_MaxDrawBuffers - 429, // textureGatherOffset_00U20B10D00D - 431, // gl_MaxComputeWorkGroupCount - 433, // textureProjLod_00J30B00B - 435, // texture2DRect_00O10B - 436, // imulExtended_20D20D20D20D - 438, // any_30F - 440, // distance_30B30B - 442, // greaterThan_20D20D - 444, // textureOffset_00a20B10D - 446, // greaterThan_30B30B - 448, // trunc_00B - 450, // sinh_30B - 452, // length_10B - 454, // findMSB_10E - 456, // findMSB_10D - 458, // dot_00B00B - 460, // asinh_20B - 462, // dot_30B30B - 464, // bitCount_00E - 466, // tan_30B - 468, // textureLod_00T20B00B - 470, // usubBorrow_20E20E20E - 472, // imageStore_00z10D30D - 473, // textureProjGrad_00R30B10B10B - 475, // exp2_10B - 477, // textureProj_00O20B - 478, // textureProjOffset_00X20B10D00B - 480, // outerProduct_10B20B - 482, // gl_MaxGeometryAtomicCounterBuffers - 483, // textureProjGradOffset_00X30B10B10B10D - 485, // textureOffset_00I10B10D00B - 487, // clamp_30B00B00B - 489, // inverse_50B - 491, // dot_10B10B - 493, // unpackHalf2x16_00E - 495, // matrixCompMult_A0BA0B - 497, // texture2DProjLod_00I20B00B - 499, // texelFetch_00W20D00D - 500, // texture2DRectProj_00O30B - 501, // radians_20B - 503, // textureGrad_00S20B20B20B - 505, // max_10D00D - 507, // imageStore_01J20D30E - 508, // round_30B - 510, // gl_MaxComputeTextureImageUnits - 512, // clamp_00D00D00D - 514, // sin_30B - 516, // floor_30B - 518, // textureProj_00S30B00B - 520, // textureGrad_00Y20B20B20B - 522, // gl_MaxCombinedAtomicCounters - 524, // textureGather_00L20B00D - 526, // textureProjGradOffset_00S30B20B20B20D - 528, // imageStore_01A10D30E - 529, // texture_00J20B - 531, // gl_PointCoord - 533, // dFdx_20B - 536, // textureProj_00X20B - 538, // max_10E10E - 540, // max_30B30B - 542, // clamp_10E10E10E - 544, // texelFetchOffset_00S20D00D20D - 546, // texture_00N10B - 547, // texture_00L20B - 549, // barrier_ - 551, // gl_MaxGeometryUniformComponents - 552, // greaterThanEqual_20E20E - 554, // lessThan_10D10D - 556, // texelFetchOffset_00a20D00D10D - 558, // textureProjGradOffset_00X20B10B10B10D - 560, // texture2DProj_00I20B - 562, // texture3DProjLod_00J30B00B - 563, // not_20F - 565, // Empty - 565, // findMSB_20D - 567, // findMSB_20E - 569, // texelFetchOffset_00I10D00D10D - 571, // textureGather_00I10B00D - 573, // texelFetch_00V10D00D - 576, // outerProduct_20B20B - 578, // atan_30B30B - 580, // unpackSnorm4x8_00E - 582, // bitCount_30E - 584, // textureProjLodOffset_00R20B00B10D - 586, // log_20B - 588, // asin_30B - 590, // textureGather_00f20B - 591, // modf_30B30B - 593, // isnan_20B - 595, // max_00B00B - 597, // roundEven_20B - 599, // fwidth_00B - 602, // textureProjGrad_00J30B20B20B - 604, // dFdy_10B - 607, // outerProduct_30B10B - 609, // floatBitsToInt_30B - 611, // textureProj_00J30B - 613, // gl_InvocationID - 614, // max_30E00E - 616, // exp2_20B - 618, // textureLod_00d20B00B - 620, // radians_10B - 622, // texelFetch_00U20D00D - 624, // gl_MaxComputeWorkGroupSize - 626, // gl_BaseVertex - 627, // max_00D00D - 629, // gl_LastFragData - 631, // ceil_30B - 633, // atomicMin_00E00E - 635, // gl_MaxCombinedTextureImageUnits - 637, // bitCount_10E - 639, // texture_00S20B00B - 641, // textureGather_00e20B00B - 643, // gl_DepthRangeParameters - 645, // distance_10B10B - 647, // reflect_20B20B - 649, // mod_10B00B - 651, // uintBitsToFloat_10E - 653, // textureGrad_00Z20B20B20B - 655, // equal_10F10F - 657, // cosh_00B - 659, // bitfieldReverse_00D - 661, // bitfieldReverse_00E - 663, // max_20E20E - 665, // matrixCompMult_70B70B - 666, // bitfieldExtract_30E00D00D - 668, // textureLod_00I10B00B - 670, // greaterThanEqual_10D10D - 672, // texture_00e30B00B - 674, // textureLodOffset_00Y20B00B20D - 676, // log2_00B - 678, // gl_LastFragColor - 679, // abs_10D - 681, // abs_10B - 683, // acos_30B - 685, // tanh_10B - 687, // degrees_30B - 689, // gl_FragDepthEXT - 690, // dFdx_10B - 693, // textureProjOffset_00I30B10D - 695, // bitfieldReverse_30E - 697, // bitfieldReverse_30D - 699, // gl_ClipDistance - 700, // inversesqrt_30B - 702, // gl_LocalInvocationID - 704, // Empty - 704, // clamp_00B00B00B - 706, // textureGather_00d10B - 707, // frexp_20B20D - 709, // intBitsToFloat_20D - 711, // fract_00B - 713, // gl_FragDepth - 715, // min_30E00E - 717, // exp_20B - 719, // equal_20B20B - 721, // textureProjLodOffset_00X20B00B10D - 723, // acosh_00B - 725, // log_10B - 727, // textureProjLodOffset_00S30B00B20D - 729, // sinh_20B - 731, // textureGather_00L20B - 733, // reflect_30B30B - 735, // outerProduct_30B20B - 737, // texture_00U20B00B - 739, // texture_00S20B - 741, // outerProduct_20B10B - 743, // umulExtended_10E10E10E10E - 745, // texture_00Z20B00B - 747, // textureGradOffset_00a20B10B10B10D - 749, // notEqual_20F20F - 751, // mod_30B30B - 753, // bitfieldExtract_10D00D00D - 755, // sign_30B - 757, // sign_30D - 759, // pow_00B00B - 761, // mod_00B00B - 763, // texture_00Y20B00B - 765, // notEqual_30B30B - 767, // roundEven_10B - 769, // texture2DProjLodEXT_00I30B00B - 770, // atanh_30B - 772, // dFdy_20B - 775, // textureProj_00Y30B - 777, // bitCount_20D - 779, // step_00B00B - 781, // texelFetch_00L20D00D - 783, // imageSize_00y - 784, // isinf_00B - 786, // imageSize_00z - 787, // distance_20B20B - 789, // textureGrad_00U20B10B10B - 791, // uaddCarry_30E30E30E - 793, // mod_30B00B - 795, // texture_00K20B00B - 797, // gl_MaxCombinedImageUniforms - 799, // yuv_2_rgb_20B00H - 800, // textureGather_00f20B00B - 802, // greaterThan_20E20E - 804, // textureGrad_00a20B10B10B - 806, // textureOffset_00U20B10D00B - 808, // intBitsToFloat_10D - 810, // texture_00J20B00B - 812, // refract_20B20B00B - 814, // textureProjLod_00I30B00B - 816, // refract_00B00B00B - 818, // findLSB_10D - 820, // findLSB_10E - 822, // mix_10B10B10F - 824, // mix_10B10B10B - 826, // textureProj_00Y30B00B - 828, // texture3D_00J20B - 829, // transpose_D0B - 831, // log2_30B - 833, // textureGrad_00J20B20B20B - 835, // textureProjGrad_00d30B10B10B - 837, // fract_30B - 839, // gl_LocalInvocationIndex - 841, // textureSize_00J00D - 843, // textureGatherOffset_00I10B10D00D - 845, // textureGather_00X10B00D - 847, // texelFetchOffset_00U20D00D10D - 849, // textureProjLodOffset_00Y30B00B20D - 851, // textureSize_00e00D - 853, // notEqual_20E20E - 855, // textureLodOffset_00d20B00B10D - 857, // inverse_A0B - 859, // imageStore_01E20D30B - 860, // textureProjGrad_00X20B10B10B - 862, // max_30E30E - 864, // isnan_30B - 866, // imulExtended_00D00D00D00D - 868, // gl_in - 869, // atan_20B20B - 871, // usubBorrow_00E00E00E - 873, // textureProjLodOffset_00J30B00B20D - 875, // frexp_30B30D - 877, // gl_SecondaryFragDataEXT - 878, // min_30E30E - 880, // texture2DProj_00I30B00B - 882, // textureCubeGradEXT_00K20B20B20B - 883, // texture_00I10B - 885, // min_00B00B - 887, // gl_InstanceID - 889, // texelFetch_00c20D00D - 890, // gl_MaxVertexImageUniforms - 892, // sqrt_00B - 894, // normalize_20B - 896, // gl_MaxFragmentAtomicCounterBuffers - 898, // gl_WorkGroupID - 900, // degrees_00B - 902, // inverse_F0B - 904, // min_20E00E - 906, // textureProjLod_00R30B00B - 908, // textureSize_00P - 911, // textureGradOffset_00d20B10B10B10D - 913, // textureProjLodOffset_00R30B00B10D - 915, // atan_00B - 917, // atomicExchange_00D00D - 919, // textureGatherOffset_00R10B10D00D - 921, // imageStore_00y10D30B - 922, // gl_MaxGeometryAtomicCounters - 923, // texture2D_00I10B00B - 925, // textureProj_00X20B00B - 927, // clamp_20D20D20D - 929, // greaterThan_30E30E - 931, // frexp_10B10D - 933, // max_10E00E - 935, // smoothstep_00B00B10B - 937, // gl_GlobalInvocationID - 939, // matrixCompMult_60B60B - 940, // memoryBarrierShared_ - 942, // normalize_10B - 944, // unpackSnorm2x16_00E - 946, // imageLoad_00z10D - 947, // lessThan_30D30D - 949, // atan_00B00B - 951, // bitfieldExtract_20D00D00D - 953, // texture_00L20B00B - 955, // notEqual_10B10B - 957, // imageLoad_01G20D - 958, // bitfieldExtract_00E00D00D - 960, // atomicCompSwap_00D00D00D - 962, // trunc_30B - 964, // matrixCompMult_E0BE0B - 965, // length_00B - 967, // any_20F - 969, // gl_PerVertex - 970, // textureProj_00X30B00B - 972, // gl_ViewID_OVR - 973, // floor_10B - 975, // sin_10B - 977, // textureSize_00N00D - 978, // texelFetchOffset_00J20D00D20D - 980, // tan_00B - 982, // mod_20B20B - 984, // imageLoad_01J20D - 985, // gl_WorkGroupSize - 987, // asinh_30B - 989, // outerProduct_10B30B - 991, // textureCube_00K20B - 993, // textureSize_00c - 994, // textureSize_00b - 997, // cos_00B - 999, // min_20B20B - 1001, // textureGradOffset_00f30B10B10B10D - 1003, // max_20D20D - 1005, // textureProj_00I30B - 1007, // max_10D10D - 1009, // textureOffset_00a20B10D00B - 1011, // textureGather_00X10B - 1013, // pow_30B30B - 1015, // textureGather_00a20B - 1017, // smoothstep_10B10B10B - 1019, // textureProj_00O30B - 1020, // textureGatherOffset_00d10B00B10D - 1022, // refract_30B30B00B - 1024, // bitfieldInsert_20E20E00D00D - 1026, // floor_20B - 1028, // equal_20E20E - 1030, // mix_00B00B00B - 1032, // imageSize_01B - 1033, // greaterThanEqual_20B20B - 1035, // uaddCarry_00E00E00E - 1037, // sin_20B - 1039, // textureSize_00Q - 1040, // round_20B - 1042, // matrixCompMult_90B90B - 1043, // textureProjLod_00d30B00B - 1045, // textureSize_00W - 1046, // textureProjLod_00X20B00B - 1048, // gl_MaxCombinedAtomicCounterBuffers - 1050, // isnan_00B - 1052, // umulExtended_30E30E30E30E - 1054, // faceforward_30B30B30B - 1056, // textureGradOffset_00Y20B20B20B20D - 1058, // clamp_30E00E00E - 1060, // asin_00B - 1062, // ceil_00B - 1064, // texture3D_00J20B00B - 1065, // distance_00B00B - 1067, // texture_00a20B - 1069, // textureGatherOffset_00a20B10D - 1071, // textureGrad_00f30B10B10B - 1073, // texture2DProj_00I30B - 1075, // modf_20B20B - 1077, // textureGradOffset_00I10B10B10B10D - 1079, // notEqual_30E30E - 1081, // textureGather_00I10B - 1083, // lessThanEqual_10E10E - 1085, // inversesqrt_20B - 1087, // textureLodOffset_00J20B00B20D - 1089, // min_30D30D - 1091, // textureOffset_00R10B10D00B - 1093, // textureGrad_00e30B20B20B - 1095, // atomicAdd_00E00E - 1097, // gl_MaxGeometryInputComponents - 1098, // findMSB_30E - 1100, // findMSB_30D - 1102, // textureGrad_00X10B10B10B - 1104, // length_30B - 1106, // greaterThanEqual_30E30E - 1108, // fwidth_30B - 1111, // textureGrad_00K20B20B20B - 1113, // mix_20B20B20F - 1115, // texelFetch_00S20D00D - 1117, // textureGradOffset_00U20B10B10B10D - 1119, // mix_20B20B20B - 1121, // floatBitsToInt_10B - 1123, // max_10B00B - 1125, // textureGatherOffset_00L20B10D - 1127, // textureLod_00a20B00B - 1129, // any_10F - 1131, // textureProjGradOffset_00d30B10B10B10D - 1133, // textureProj_00N30B - 1134, // gl_MaxProgramTexelOffset - 1136, // exp2_30B - 1138, // texelFetchOffset_00L20D00D10D - 1140, // equal_30D30D - 1142, // texture3DProj_00J30B00B - 1143, // packSnorm2x16_10B - 1145, // floatBitsToUint_30B - 1147, // lessThanEqual_30D30D - 1149, // gl_MaxGeometryImageUniforms - 1150, // imageLoad_00y10D - 1151, // asinh_00B - 1153, // textureOffset_00R10B10D - 1155, // greaterThanEqual_10E10E - 1157, // textureProjGradOffset_00I30B10B10B10D - 1159, // textureGather_00Z20B - 1161, // textureOffset_00X10B10D - 1163, // cosh_30B - 1165, // textureOffset_00d20B10D00B - 1167, // texture_00R10B - 1169, // textureOffset_00S20B20D00B - 1171, // usubBorrow_30E30E30E - 1173, // radians_00B - 1175, // textureProjOffset_00R20B10D00B - 1177, // ldexp_30B30D - 1179, // max_30B00B - 1181, // min_20D20D - 1183, // step_10B10B - 1185, // gl_MaxDualSourceDrawBuffersEXT - 1186, // step_30B30B - 1188, // bitfieldReverse_10E - 1190, // bitfieldReverse_10D - 1192, // texture3DProj_00J30B - 1193, // matrixCompMult_B0BB0B - 1194, // transpose_E0B - 1196, // cross_20B20B - 1198, // all_10F - 1200, // clamp_20B00B00B - 1202, // tanh_20B - 1204, // dFdx_00B - 1207, // matrixCompMult_F0BF0B - 1209, // abs_00D - 1211, // abs_00B - 1213, // textureLod_00R10B00B - 1215, // step_20B20B - 1217, // gl_MaxFragmentAtomicCounters - 1219, // textureLodOffset_00U20B00B10D - 1221, // textureProj_00R20B00B - 1223, // faceforward_20B20B20B - 1225, // imageSize_01E - 1226, // acos_20B - 1228, // texelFetch_00X10D00D - 1230, // sinh_00B - 1232, // imageSize_01A - 1233, // texture2DLod_00I10B00B - 1235, // texelFetch_00b10D00D - 1238, // imageSize_01F - 1239, // gl_MaxAtomicCounterBufferSize - 1241, // max_20B20B - 1243, // textureGatherOffset_00f20B00B10D - 1245, // outerProduct_30B30B - 1247, // lessThanEqual_20E20E - 1249, // textureLod_00X10B00B - 1251, // exp_30B - 1253, // memoryBarrier_ - 1255, // imageSize_01D - 1256, // step_00B30B - 1258, // bitCount_10D - 1260, // equal_30E30E - 1262, // sign_00B - 1264, // log_00B - 1266, // textureLod_00Z20B00B - 1268, // sign_00D - 1270, // textureOffset_00Y20B20D - 1272, // transpose_60B - 1274, // findMSB_00D - 1276, // gl_MaxGeometryTotalOutputComponents - 1277, // acosh_30B - 1279, // findMSB_00E - 1281, // bitfieldExtract_20E00D00D - 1283, // uintBitsToFloat_20E - 1285, // unpackUnorm4x8_00E - 1287, // texture2DProj_00M20B - 1288, // texelFetchOffset_00X10D00D10D - 1290, // mod_10B10B - 1292, // texture_00d20B00B - 1294, // notEqual_10D10D - 1296, // texture2DProj_00M30B - 1297, // textureSize_00V - 1300, // packUnorm2x16_10B - 1302, // faceforward_00B00B00B - 1304, // umulExtended_20E20E20E20E - 1306, // textureOffset_00X10B10D00B - 1308, // cos_30B - 1310, // findLSB_30D - 1312, // findLSB_30E - 1314, // bitCount_20E - 1316, // gl_NumWorkGroups - 1318, // equal_20D20D - 1320, // textureProjOffset_00Y30B20D00B - 1322, // textureGatherOffset_00U20B10D - 1324, // faceforward_10B10B10B - 1326, // textureSize_00L00D - 1328, // gl_MaxComputeUniformComponents - 1330, // textureGather_00R10B00D - 1332, // memoryBarrierBuffer_ - 1334, // textureSize_00Z00D - 1336, // textureGather_00U20B - 1338, // bitfieldExtract_30D00D00D - 1340, // min_10D00D - 1342, // imageStore_01H20D30B - 1343, // texelFetch_00Q20D00D - 1344, // max_20E00E - 1346, // textureProj_00S30B - 1348, // roundEven_00B - 1350, // texture2DLodEXT_00I10B00B - 1351, // dFdy_30B - 1354, // atanh_20B - 1356, // clamp_10E00E00E - 1358, // clamp_20D00D00D - 1360, // all_20F - 1362, // isinf_10B - 1364, // imageLoad_01C20D - 1365, // imageSize_01J - 1366, // imageSize_01H - 1367, // imageSize_01I - 1368, // packHalf2x16_10B - 1370, // texture2DProj_00I20B00B - 1372, // findLSB_00E - 1374, // findLSB_00D - 1376, // textureProjOffset_00X30B10D - 1378, // imageSize_01C - 1379, // greaterThanEqual_30B30B - 1381, // textureSize_00U00D - 1383, // textureGradOffset_00R10B10B10B10D - 1385, // imageSize_01G - 1386, // equal_30F30F - 1388, // bitfieldExtract_00D00D00D - 1390, // texture2DProjLodEXT_00I20B00B - 1391, // notEqual_30F30F - 1393, // gl_FrontFacing - 1395, // gl_SecondaryFragColorEXT - 1396, // inversesqrt_10B - 1398, // imageStore_01C20D30D - 1399, // acos_10B - 1401, // abs_30D - 1403, // gl_MaxFragmentUniformVectors - 1405, // fract_20B - 1407, // abs_30B - 1409, // lessThan_10B10B - 1411, // textureGatherOffset_00X10B10D - 1413, // bitfieldInsert_10E10E00D00D - 1415, // packSnorm4x8_30B - 1417, // mix_10B10B00B - 1419, // imageLoad_01E20D - 1420, // clamp_30D30D30D - 1422, // textureGather_00U20B00D - 1424, // textureSize_00f00D - 1426, // textureProj_00N20B00B - 1427, // gl_FragData - 1429, // imageLoad_01B20D - 1430, // textureProj_00d30B00B - 1432, // clamp_20E00E00E - 1434, // texture_00X10B - 1436, // textureProj_00d30B - 1438, // mix_30B30B30F - 1440, // determinant_F0B - 1441, // transpose_A0B - 1443, // pow_20B20B - 1445, // texture2DProjGradEXT_00I20B10B10B - 1446, // gl_LastFragColorARM - 1447, // textureGather_00Z20B00D - 1449, // textureGather_00R10B - 1451, // lessThanEqual_20D20D - 1453, // textureLod_00S20B00B - 1455, // textureProjLod_00Y30B00B - 1457, // cosh_10B - 1459, // sqrt_30B - 1461, // gl_VertexID - 1463, // sign_10D - 1465, // textureProj_00M30B - 1466, // exp_00B - 1468, // min_00E00E - 1470, // max_30D30D - 1472, // umulExtended_00E00E00E00E - 1474, // gl_MaxVertexAttribs - 1476, // gl_BaseInstance - 1477, // transpose_B0B - 1479, // fwidth_20B - 1482, // Empty - 1482, // smoothstep_00B00B30B - 1484, // floatBitsToInt_20B - 1486, // textureSize_00M00D - 1487, // log2_20B - 1489, // ldexp_10B10D - 1491, // min_10B00B - 1493, // mix_30B30B00B - 1495, // angle_BaseInstance - 1496, // degrees_10B - 1498, // gl_MaxTextureImageUnits - 1500, // gl_Position - 1503, // texture_00K20B - 1505, // atomicCompSwap_00E00E00E - 1507, // textureProjOffset_00Y30B20D - 1509, // sinh_10B - 1511, // atan_30B - 1513, // textureGradOffset_00L20B10B10B10D - 1515, // ceil_10B - 1517, // textureSize_00S00D - 1519, // imageStore_01D20D30E - 1520, // greaterThanEqual_10B10B - 1522, // atomicCounterDecrement_00G - 1524, // textureCube_00K20B00B - 1526, // dot_20B20B - 1528, // transpose_90B - 1530, // not_30F - 1532, // textureProjLodOffset_00I20B00B10D - 1534, // notEqual_10F10F - 1536, // textureProjGrad_00R20B10B10B - 1538, // texture_00f30B - 1540, // smoothstep_00B00B00B - 1542, // textureProjLodOffset_00d30B00B10D - 1544, // texelFetch_00R10D00D - 1546, // cosh_20B - 1548, // textureProjLodOffset_00I30B00B10D - 1550, // normalize_30B - 1552, // smoothstep_30B30B30B - 1554, // bitfieldInsert_10D10D00D00D - 1556, // clamp_20B20B20B - 1558, // textureGrad_00L20B10B10B - 1560, // textureGrad_00R10B10B10B - 1562, // textureProjGrad_00I20B10B10B - 1564, // textureGather_00e20B - 1565, // texture2D_00M10B - 1566, // min_00D00D - 1568, // outerProduct_10B10B - 1570, // lessThanEqual_10D10D - 1572, // trunc_20B - 1574, // gl_MaxVaryingVectors - 1576, // textureProjOffset_00I30B10D00B - 1578, // textureSize_00d00D - 1580, // sin_00B - 1582, // gl_MaxVertexUniformVectors - 1584, // textureCubeLodEXT_00K20B00B - 1585, // textureGather_00T20B00D - 1587, // textureProj_00N20B - 1588, // uaddCarry_10E10E10E - 1590, // tan_10B - 1592, // textureLodOffset_00L20B00B10D - 1594, // atomicCounterIncrement_00G - 1596, // ldexp_20B20D - 1598, // greaterThanEqual_30D30D - 1600, // notEqual_20B20B - 1602, // imageLoad_01D20D - 1603, // textureProjLodOffset_00X30B00B10D - 1605, // isinf_20B - 1607, // cos_10B - 1609, // mix_30B30B30B - 1611, // texture_00e30B - 1613, // textureSize_00T00D - 1615, // textureGatherOffset_00X10B10D00D - 1617, // equal_10E10E - 1619, // min_10E10E - 1621, // textureProjGradOffset_00Y30B20B20B20D - 1623, // textureGrad_00T20B20B20B - 1625, // memoryBarrierImage_ - 1627, // textureProjOffset_00J30B20D - 1629, // EmitVertex_ - 1630, // textureProjOffset_00d30B10D00B - 1632, // round_10B - 1634, // textureProjOffset_00d30B10D - 1636, // notEqual_10E10E - 1638, // textureProj_00R30B - 1640, // matrixCompMult_50B50B - 1642, // equal_20F20F - 1644, // gl_MaxFragmentInputVectors - 1646, // equal_30B30B - 1648, // textureLod_00U20B00B - 1650, // usubBorrow_10E10E10E - 1652, // equal_10B10B - 1654, // textureProjGradOffset_00I20B10B10B10D - 1656, // texture2DProjLod_00I30B00B - 1658, // isnan_10B - 1660, // uaddCarry_20E20E20E - 1662, // max_10B10B - 1664, // atomicMax_00E00E - 1666, // gl_PointSize - 1668, // atomicMin_00D00D - 1670, // textureSize_00X00D - 1672, // greaterThan_10B10B - 1674, // asin_10B - 1676, // textureGather_00d10B00B - 1678, // trunc_10B - 1680, // gl_MaxComputeAtomicCounters - 1682, // textureProj_00X30B - 1684, // gl_MaxVertexAtomicCounters - 1686, // length_20B - 1688, // bitfieldInsert_30E30E00D00D - 1690, // textureOffset_00S20B20D - 1692, // textureProjOffset_00X20B10D - 1694, // clamp_30D00D00D - 1696, // clamp_10B00B00B - 1698, // textureProj_00R20B - 1700, // imageStore_01F20D30D - 1701, // textureProj_00I20B00B - 1703, // greaterThan_10E10E - 1705, // textureProjOffset_00R30B10D00B - 1707, // dFdy_00B - 1710, // min_30D00D - 1712, // floatBitsToInt_00B - 1714, // sign_10B - 1716, // max_00E00E - 1718, // texture_00a20B00B - 1720, // texture_00M10B00B - 1721, // smoothstep_20B20B20B - 1723, // textureCubeLod_00K20B00B - 1725, // textureOffset_00J20B20D - 1727, // texelFetch_00J20D00D - 1729, // textureProj_00M20B00B - 1730, // floatBitsToUint_00B - 1732, // textureProjGradOffset_00R30B10B10B10D - 1734, // textureLod_00K20B00B - 1736, // textureProjOffset_00X30B10D00B - 1738, // cos_20B - 1740, // exp2_00B - 1742, // radians_30B - 1744, // texture2DRectProj_00O20B - 1745, // tan_20B - 1747, // textureGather_00T20B - 1749, // textureGather_00a20B00D - 1751, // textureProjGradOffset_00J30B20B20B20D - 1753, // asinh_10B - 1755, // textureProjGrad_00X30B10B10B - 1757, // floor_00B - 1759, // gl_DrawID - 1760, // atomicOr_00D00D - 1762, // texture3DLod_00J20B00B + 318, // subpassLoad_01m00D + 320, // textureOffset_00I10B10D + 322, // atomicExchange_00E00E + 324, // textureProj_00I30B00B + 326, // acosh_10B + 328, // gl_MaxCombinedShaderOutputResources + 330, // atomicOr_00E00E + 332, // min_20B00B + 334, // textureProj_00M30B00B + 335, // atomicMax_00D00D + 337, // textureProj_00M20B + 338, // texture_00I10B00B + 340, // reflect_00B00B + 342, // mod_20B00B + 344, // lessThan_20D20D + 346, // reflect_10B10B + 348, // floatBitsToUint_10B + 350, // textureLod_00J20B00B + 352, // subpassLoad_01i + 354, // sqrt_10B + 356, // subpassLoad_01k + 358, // textureProjLod_00S30B00B + 360, // clamp_20E20E20E + 362, // atomicAnd_00E00E + 364, // max_20D00D + 366, // textureSize_00I00D + 368, // gl_MaxComputeAtomicCounterBuffers + 370, // gl_PrimitiveIDIn + 371, // texelFetchOffset_00R10D00D10D + 373, // isinf_30B + 375, // textureGatherOffset_00a20B10D00D + 377, // lessThan_30B30B + 379, // textureGatherOffset_00I10B10D + 381, // textureOffset_00L20B10D00B + 383, // textureLodOffset_00X10B00B10D + 385, // texture_00T20B00B + 387, // textureOffset_00L20B10D + 389, // lessThanEqual_30E30E + 391, // textureOffset_00J20B20D00B + 393, // min_10E00E + 395, // log_30B + 397, // atomicCounter_00G + 399, // textureProjOffset_00S30B20D + 401, // imageLoad_01I20D + 402, // round_00B + 404, // smoothstep_00B00B20B + 406, // imageLoad_01H20D + 407, // textureGather_00K20B + 409, // bitfieldInsert_30D30D00D00D + 411, // imageStore_01G20D30E + 412, // fwidth_10B + 415, // textureProjLod_00R20B00B + 417, // notEqual_30D30D + 419, // refract_10B10B00B + 421, // textureProjOffset_00I20B10D + 423, // greaterThan_30D30D + 425, // greaterThan_10D10D + 427, // texture_00U20B + 429, // textureSize_00a00D + 431, // bitfieldExtract_10E00D00D + 433, // gl_MaxDrawBuffers + 435, // textureGatherOffset_00U20B10D00D + 437, // gl_MaxComputeWorkGroupCount + 439, // textureProjLod_00J30B00B + 441, // texture2DRect_00O10B + 442, // imulExtended_20D20D20D20D + 444, // any_30F + 446, // distance_30B30B + 448, // greaterThan_20D20D + 450, // textureOffset_00a20B10D + 452, // greaterThan_30B30B + 454, // trunc_00B + 456, // sinh_30B + 458, // length_10B + 460, // findMSB_10E + 462, // findMSB_10D + 464, // subpassLoad_01j + 466, // dot_00B00B + 468, // asinh_20B + 470, // dot_30B30B + 472, // bitCount_00E + 474, // tan_30B + 476, // textureLod_00T20B00B + 478, // usubBorrow_20E20E20E + 480, // imageStore_00z10D30D + 481, // textureProjGrad_00R30B10B10B + 483, // exp2_10B + 485, // textureProj_00O20B + 486, // textureProjOffset_00X20B10D00B + 488, // outerProduct_10B20B + 490, // gl_MaxGeometryAtomicCounterBuffers + 491, // textureProjGradOffset_00X30B10B10B10D + 493, // textureOffset_00I10B10D00B + 495, // clamp_30B00B00B + 497, // inverse_50B + 499, // dot_10B10B + 501, // unpackHalf2x16_00E + 503, // matrixCompMult_A0BA0B + 505, // texture2DProjLod_00I20B00B + 507, // texelFetch_00W20D00D + 508, // texture2DRectProj_00O30B + 509, // radians_20B + 511, // textureGrad_00S20B20B20B + 513, // max_10D00D + 515, // imageStore_01J20D30E + 516, // round_30B + 518, // gl_MaxComputeTextureImageUnits + 520, // clamp_00D00D00D + 522, // sin_30B + 524, // floor_30B + 526, // textureProj_00S30B00B + 528, // textureGrad_00Y20B20B20B + 530, // gl_MaxCombinedAtomicCounters + 532, // textureGather_00L20B00D + 534, // textureProjGradOffset_00S30B20B20B20D + 536, // imageStore_01A10D30E + 537, // texture_00J20B + 539, // gl_PointCoord + 541, // dFdx_20B + 544, // textureProj_00X20B + 546, // max_10E10E + 548, // max_30B30B + 550, // clamp_10E10E10E + 552, // texelFetchOffset_00S20D00D20D + 554, // texture_00N10B + 555, // texture_00L20B + 557, // barrier_ + 559, // gl_MaxGeometryUniformComponents + 560, // greaterThanEqual_20E20E + 562, // lessThan_10D10D + 564, // texelFetchOffset_00a20D00D10D + 566, // textureProjGradOffset_00X20B10B10B10D + 568, // texture2DProj_00I20B + 570, // texture3DProjLod_00J30B00B + 571, // not_20F + 573, // Empty + 573, // findMSB_20D + 575, // findMSB_20E + 577, // texelFetchOffset_00I10D00D10D + 579, // textureGather_00I10B00D + 581, // texelFetch_00V10D00D + 584, // outerProduct_20B20B + 586, // atan_30B30B + 588, // gl_MaxFragmentAtomicCounterBuffers + 590, // unpackSnorm4x8_00E + 592, // bitCount_30E + 594, // textureProjLodOffset_00R20B00B10D + 596, // log_20B + 598, // asin_30B + 600, // textureGather_00f20B + 601, // modf_30B30B + 603, // isnan_20B + 605, // max_00B00B + 607, // roundEven_20B + 609, // fwidth_00B + 612, // textureProjGrad_00J30B20B20B + 614, // dFdy_10B + 617, // outerProduct_30B10B + 619, // floatBitsToInt_30B + 621, // textureProj_00J30B + 623, // gl_InvocationID + 624, // max_30E00E + 626, // exp2_20B + 628, // textureLod_00d20B00B + 630, // radians_10B + 632, // texelFetch_00U20D00D + 634, // gl_MaxComputeWorkGroupSize + 636, // gl_BaseVertex + 637, // max_00D00D + 639, // gl_LastFragData + 641, // ceil_30B + 643, // atomicMin_00E00E + 645, // gl_MaxCombinedTextureImageUnits + 647, // bitCount_10E + 649, // texture_00S20B00B + 651, // textureGather_00e20B00B + 653, // gl_DepthRangeParameters + 655, // distance_10B10B + 657, // reflect_20B20B + 659, // mod_10B00B + 661, // uintBitsToFloat_10E + 663, // textureGrad_00Z20B20B20B + 665, // equal_10F10F + 667, // cosh_00B + 669, // bitfieldReverse_00D + 671, // bitfieldReverse_00E + 673, // max_20E20E + 675, // matrixCompMult_70B70B + 676, // bitfieldExtract_30E00D00D + 678, // textureLod_00I10B00B + 680, // greaterThanEqual_10D10D + 682, // texture_00e30B00B + 684, // textureLodOffset_00Y20B00B20D + 686, // log2_00B + 688, // gl_LastFragColor + 689, // abs_10D + 691, // abs_10B + 693, // acos_30B + 695, // tanh_10B + 697, // degrees_30B + 699, // gl_FragDepthEXT + 700, // dFdx_10B + 703, // textureProjOffset_00I30B10D + 705, // bitfieldReverse_30E + 707, // bitfieldReverse_30D + 709, // gl_ClipDistance + 710, // inversesqrt_30B + 712, // gl_LocalInvocationID + 714, // Empty + 714, // clamp_00B00B00B + 716, // textureGather_00d10B + 717, // frexp_20B20D + 719, // intBitsToFloat_20D + 721, // fract_00B + 723, // gl_FragDepth + 725, // min_30E00E + 727, // exp_20B + 729, // equal_20B20B + 731, // textureProjLodOffset_00X20B00B10D + 733, // acosh_00B + 735, // log_10B + 737, // textureProjLodOffset_00S30B00B20D + 739, // sinh_20B + 741, // textureGather_00L20B + 743, // gl_MaxGeometryTotalOutputComponents + 744, // reflect_30B30B + 746, // outerProduct_30B20B + 748, // texture_00U20B00B + 750, // texture_00S20B + 752, // outerProduct_20B10B + 754, // umulExtended_10E10E10E10E + 756, // texture_00Z20B00B + 758, // textureGradOffset_00a20B10B10B10D + 760, // notEqual_20F20F + 762, // mod_30B30B + 764, // bitfieldExtract_10D00D00D + 766, // sign_30B + 768, // sign_30D + 770, // pow_00B00B + 772, // mod_00B00B + 774, // texture_00Y20B00B + 776, // notEqual_30B30B + 778, // roundEven_10B + 780, // texture2DProjLodEXT_00I30B00B + 781, // atanh_30B + 783, // dFdy_20B + 786, // textureProj_00Y30B + 788, // bitCount_20D + 790, // step_00B00B + 792, // texelFetch_00L20D00D + 794, // imageSize_00y + 795, // isinf_00B + 797, // imageSize_00z + 798, // distance_20B20B + 800, // textureGrad_00U20B10B10B + 802, // uaddCarry_30E30E30E + 804, // mod_30B00B + 806, // texture_00K20B00B + 808, // gl_MaxCombinedImageUniforms + 810, // yuv_2_rgb_20B00H + 811, // textureGather_00f20B00B + 813, // greaterThan_20E20E + 815, // textureGrad_00a20B10B10B + 817, // textureOffset_00U20B10D00B + 819, // intBitsToFloat_10D + 821, // texture_00J20B00B + 823, // refract_20B20B00B + 825, // textureProjLod_00I30B00B + 827, // refract_00B00B00B + 829, // findLSB_10D + 831, // findLSB_10E + 833, // mix_10B10B10F + 835, // mix_10B10B10B + 837, // textureProj_00Y30B00B + 839, // texture3D_00J20B + 840, // transpose_D0B + 842, // log2_30B + 844, // textureGrad_00J20B20B20B + 846, // textureProjGrad_00d30B10B10B + 848, // fract_30B + 850, // gl_LocalInvocationIndex + 852, // textureSize_00J00D + 854, // textureGatherOffset_00I10B10D00D + 856, // textureGather_00X10B00D + 858, // texelFetchOffset_00U20D00D10D + 860, // textureProjLodOffset_00Y30B00B20D + 862, // textureSize_00e00D + 864, // notEqual_20E20E + 866, // textureLodOffset_00d20B00B10D + 868, // inverse_A0B + 870, // imageStore_01E20D30B + 871, // textureProjGrad_00X20B10B10B + 873, // max_30E30E + 875, // isnan_30B + 877, // imulExtended_00D00D00D00D + 879, // gl_in + 880, // atan_20B20B + 882, // usubBorrow_00E00E00E + 884, // textureProjLodOffset_00J30B00B20D + 886, // frexp_30B30D + 888, // gl_SecondaryFragDataEXT + 889, // min_30E30E + 891, // texture2DProj_00I30B00B + 893, // textureCubeGradEXT_00K20B20B20B + 894, // texture_00I10B + 896, // min_00B00B + 898, // gl_InstanceID + 900, // texelFetch_00c20D00D + 901, // gl_MaxVertexImageUniforms + 903, // sqrt_00B + 905, // normalize_20B + 907, // subpassLoad_01n00D + 909, // gl_WorkGroupID + 911, // degrees_00B + 913, // inverse_F0B + 915, // min_20E00E + 917, // textureProjLod_00R30B00B + 919, // textureSize_00P + 922, // textureGradOffset_00d20B10B10B10D + 924, // textureProjLodOffset_00R30B00B10D + 926, // atan_00B + 928, // atomicExchange_00D00D + 930, // textureGatherOffset_00R10B10D00D + 932, // imageStore_00y10D30B + 933, // gl_MaxGeometryAtomicCounters + 934, // texture2D_00I10B00B + 936, // textureProj_00X20B00B + 938, // clamp_20D20D20D + 940, // greaterThan_30E30E + 942, // frexp_10B10D + 944, // max_10E00E + 946, // smoothstep_00B00B10B + 948, // gl_GlobalInvocationID + 950, // matrixCompMult_60B60B + 951, // memoryBarrierShared_ + 953, // normalize_10B + 955, // unpackSnorm2x16_00E + 957, // imageLoad_00z10D + 958, // lessThan_30D30D + 960, // atan_00B00B + 962, // bitfieldExtract_20D00D00D + 964, // texture_00L20B00B + 966, // notEqual_10B10B + 968, // imageLoad_01G20D + 969, // bitfieldExtract_00E00D00D + 971, // atomicCompSwap_00D00D00D + 973, // trunc_30B + 975, // matrixCompMult_E0BE0B + 976, // length_00B + 978, // any_20F + 980, // gl_PerVertex + 981, // textureProj_00X30B00B + 983, // gl_ViewID_OVR + 984, // floor_10B + 986, // sin_10B + 988, // textureSize_00N00D + 989, // texelFetchOffset_00J20D00D20D + 991, // tan_00B + 993, // mod_20B20B + 995, // imageLoad_01J20D + 996, // gl_WorkGroupSize + 998, // asinh_30B + 1000, // outerProduct_10B30B + 1002, // textureCube_00K20B + 1004, // textureSize_00c + 1005, // textureSize_00b + 1008, // cos_00B + 1010, // min_20B20B + 1012, // textureGradOffset_00f30B10B10B10D + 1014, // max_20D20D + 1016, // textureProj_00I30B + 1018, // max_10D10D + 1020, // textureOffset_00a20B10D00B + 1022, // textureGather_00X10B + 1024, // pow_30B30B + 1026, // textureGather_00a20B + 1028, // smoothstep_10B10B10B + 1030, // textureProj_00O30B + 1031, // textureGatherOffset_00d10B00B10D + 1033, // refract_30B30B00B + 1035, // bitfieldInsert_20E20E00D00D + 1037, // floor_20B + 1039, // equal_20E20E + 1041, // mix_00B00B00B + 1043, // imageSize_01B + 1044, // greaterThanEqual_20B20B + 1046, // uaddCarry_00E00E00E + 1048, // sin_20B + 1050, // textureSize_00Q + 1051, // round_20B + 1053, // matrixCompMult_90B90B + 1054, // textureProjLod_00d30B00B + 1056, // textureSize_00W + 1057, // textureProjLod_00X20B00B + 1059, // gl_MaxCombinedAtomicCounterBuffers + 1061, // isnan_00B + 1063, // umulExtended_30E30E30E30E + 1065, // faceforward_30B30B30B + 1067, // textureGradOffset_00Y20B20B20B20D + 1069, // clamp_30E00E00E + 1071, // asin_00B + 1073, // ceil_00B + 1075, // texture3D_00J20B00B + 1076, // distance_00B00B + 1078, // texture_00a20B + 1080, // textureGatherOffset_00a20B10D + 1082, // textureGrad_00f30B10B10B + 1084, // texture2DProj_00I30B + 1086, // modf_20B20B + 1088, // textureGradOffset_00I10B10B10B10D + 1090, // notEqual_30E30E + 1092, // textureGather_00I10B + 1094, // lessThanEqual_10E10E + 1096, // inversesqrt_20B + 1098, // textureLodOffset_00J20B00B20D + 1100, // min_30D30D + 1102, // textureOffset_00R10B10D00B + 1104, // textureGrad_00e30B20B20B + 1106, // atomicAdd_00E00E + 1108, // gl_MaxGeometryInputComponents + 1109, // findMSB_30E + 1111, // findMSB_30D + 1113, // textureGrad_00X10B10B10B + 1115, // length_30B + 1117, // greaterThanEqual_30E30E + 1119, // fwidth_30B + 1122, // textureGrad_00K20B20B20B + 1124, // mix_20B20B20F + 1126, // texelFetch_00S20D00D + 1128, // textureGradOffset_00U20B10B10B10D + 1130, // mix_20B20B20B + 1132, // floatBitsToInt_10B + 1134, // max_10B00B + 1136, // textureGatherOffset_00L20B10D + 1138, // textureLod_00a20B00B + 1140, // any_10F + 1142, // textureProjGradOffset_00d30B10B10B10D + 1144, // textureProj_00N30B + 1145, // gl_MaxProgramTexelOffset + 1147, // exp2_30B + 1149, // texelFetchOffset_00L20D00D10D + 1151, // equal_30D30D + 1153, // texture3DProj_00J30B00B + 1154, // packSnorm2x16_10B + 1156, // floatBitsToUint_30B + 1158, // lessThanEqual_30D30D + 1160, // gl_MaxGeometryImageUniforms + 1161, // imageLoad_00y10D + 1162, // asinh_00B + 1164, // textureOffset_00R10B10D + 1166, // greaterThanEqual_10E10E + 1168, // textureProjGradOffset_00I30B10B10B10D + 1170, // textureGather_00Z20B + 1172, // textureOffset_00X10B10D + 1174, // cosh_30B + 1176, // textureOffset_00d20B10D00B + 1178, // texture_00R10B + 1180, // textureOffset_00S20B20D00B + 1182, // usubBorrow_30E30E30E + 1184, // radians_00B + 1186, // textureProjOffset_00R20B10D00B + 1188, // ldexp_30B30D + 1190, // max_30B00B + 1192, // min_20D20D + 1194, // step_10B10B + 1196, // gl_MaxDualSourceDrawBuffersEXT + 1197, // step_30B30B + 1199, // bitfieldReverse_10E + 1201, // bitfieldReverse_10D + 1203, // texture3DProj_00J30B + 1204, // matrixCompMult_B0BB0B + 1205, // transpose_E0B + 1207, // cross_20B20B + 1209, // all_10F + 1211, // clamp_20B00B00B + 1213, // tanh_20B + 1215, // dFdx_00B + 1218, // matrixCompMult_F0BF0B + 1220, // abs_00D + 1222, // abs_00B + 1224, // textureLod_00R10B00B + 1226, // step_20B20B + 1228, // gl_MaxFragmentAtomicCounters + 1230, // textureLodOffset_00U20B00B10D + 1232, // textureProj_00R20B00B + 1234, // faceforward_20B20B20B + 1236, // imageSize_01E + 1237, // acos_20B + 1239, // texelFetch_00X10D00D + 1241, // sinh_00B + 1243, // imageSize_01A + 1244, // texture2DLod_00I10B00B + 1246, // texelFetch_00b10D00D + 1249, // imageSize_01F + 1250, // gl_MaxAtomicCounterBufferSize + 1252, // max_20B20B + 1254, // textureGatherOffset_00f20B00B10D + 1256, // outerProduct_30B30B + 1258, // lessThanEqual_20E20E + 1260, // textureLod_00X10B00B + 1262, // exp_30B + 1264, // memoryBarrier_ + 1266, // imageSize_01D + 1267, // step_00B30B + 1269, // bitCount_10D + 1271, // equal_30E30E + 1273, // sign_00B + 1275, // log_00B + 1277, // textureLod_00Z20B00B + 1279, // sign_00D + 1281, // textureOffset_00Y20B20D + 1283, // transpose_60B + 1285, // findMSB_00D + 1287, // subpassLoad_01l00D + 1289, // acosh_30B + 1291, // findMSB_00E + 1293, // bitfieldExtract_20E00D00D + 1295, // uintBitsToFloat_20E + 1297, // unpackUnorm4x8_00E + 1299, // texture2DProj_00M20B + 1300, // texelFetchOffset_00X10D00D10D + 1302, // mod_10B10B + 1304, // texture_00d20B00B + 1306, // notEqual_10D10D + 1308, // texture2DProj_00M30B + 1309, // textureSize_00V + 1312, // packUnorm2x16_10B + 1314, // faceforward_00B00B00B + 1316, // umulExtended_20E20E20E20E + 1318, // textureOffset_00X10B10D00B + 1320, // cos_30B + 1322, // findLSB_30D + 1324, // findLSB_30E + 1326, // bitCount_20E + 1328, // gl_NumWorkGroups + 1330, // equal_20D20D + 1332, // textureProjOffset_00Y30B20D00B + 1334, // textureGatherOffset_00U20B10D + 1336, // faceforward_10B10B10B + 1338, // textureSize_00L00D + 1340, // gl_MaxComputeUniformComponents + 1342, // textureGather_00R10B00D + 1344, // memoryBarrierBuffer_ + 1346, // textureSize_00Z00D + 1348, // textureGather_00U20B + 1350, // bitfieldExtract_30D00D00D + 1352, // min_10D00D + 1354, // imageStore_01H20D30B + 1355, // texelFetch_00Q20D00D + 1356, // max_20E00E + 1358, // textureProj_00S30B + 1360, // roundEven_00B + 1362, // texture2DLodEXT_00I10B00B + 1363, // dFdy_30B + 1366, // atanh_20B + 1368, // clamp_10E00E00E + 1370, // clamp_20D00D00D + 1372, // all_20F + 1374, // isinf_10B + 1376, // imageLoad_01C20D + 1377, // imageSize_01J + 1378, // imageSize_01H + 1379, // imageSize_01I + 1380, // packHalf2x16_10B + 1382, // texture2DProj_00I20B00B + 1384, // findLSB_00E + 1386, // findLSB_00D + 1388, // textureProjOffset_00X30B10D + 1390, // imageSize_01C + 1391, // greaterThanEqual_30B30B + 1393, // textureSize_00U00D + 1395, // textureGradOffset_00R10B10B10B10D + 1397, // imageSize_01G + 1398, // equal_30F30F + 1400, // bitfieldExtract_00D00D00D + 1402, // texture2DProjLodEXT_00I20B00B + 1403, // notEqual_30F30F + 1405, // gl_FrontFacing + 1407, // gl_SecondaryFragColorEXT + 1408, // inversesqrt_10B + 1410, // imageStore_01C20D30D + 1411, // acos_10B + 1413, // abs_30D + 1415, // gl_MaxFragmentUniformVectors + 1417, // fract_20B + 1419, // abs_30B + 1421, // lessThan_10B10B + 1423, // textureGatherOffset_00X10B10D + 1425, // bitfieldInsert_10E10E00D00D + 1427, // packSnorm4x8_30B + 1429, // mix_10B10B00B + 1431, // imageLoad_01E20D + 1432, // clamp_30D30D30D + 1434, // textureGather_00U20B00D + 1436, // textureSize_00f00D + 1438, // textureProj_00N20B00B + 1439, // gl_FragData + 1441, // imageLoad_01B20D + 1442, // textureProj_00d30B00B + 1444, // clamp_20E00E00E + 1446, // texture_00X10B + 1448, // textureProj_00d30B + 1450, // mix_30B30B30F + 1452, // determinant_F0B + 1453, // transpose_A0B + 1455, // pow_20B20B + 1457, // texture2DProjGradEXT_00I20B10B10B + 1458, // gl_LastFragColorARM + 1459, // textureGather_00Z20B00D + 1461, // textureGather_00R10B + 1463, // lessThanEqual_20D20D + 1465, // textureLod_00S20B00B + 1467, // textureProjLod_00Y30B00B + 1469, // cosh_10B + 1471, // sqrt_30B + 1473, // gl_VertexID + 1475, // sign_10D + 1477, // textureProj_00M30B + 1478, // exp_00B + 1480, // min_00E00E + 1482, // max_30D30D + 1484, // umulExtended_00E00E00E00E + 1486, // gl_MaxVertexAttribs + 1488, // gl_BaseInstance + 1489, // transpose_B0B + 1491, // fwidth_20B + 1494, // Empty + 1494, // smoothstep_00B00B30B + 1496, // floatBitsToInt_20B + 1498, // textureSize_00M00D + 1499, // log2_20B + 1501, // ldexp_10B10D + 1503, // min_10B00B + 1505, // mix_30B30B00B + 1507, // angle_BaseInstance + 1508, // degrees_10B + 1510, // gl_MaxTextureImageUnits + 1512, // gl_Position + 1515, // texture_00K20B + 1517, // atomicCompSwap_00E00E00E + 1519, // textureProjOffset_00Y30B20D + 1521, // sinh_10B + 1523, // atan_30B + 1525, // textureGradOffset_00L20B10B10B10D + 1527, // ceil_10B + 1529, // textureSize_00S00D + 1531, // imageStore_01D20D30E + 1532, // greaterThanEqual_10B10B + 1534, // atomicCounterDecrement_00G + 1536, // textureCube_00K20B00B + 1538, // dot_20B20B + 1540, // transpose_90B + 1542, // not_30F + 1544, // textureProjLodOffset_00I20B00B10D + 1546, // notEqual_10F10F + 1548, // textureProjGrad_00R20B10B10B + 1550, // texture_00f30B + 1552, // smoothstep_00B00B00B + 1554, // textureProjLodOffset_00d30B00B10D + 1556, // texelFetch_00R10D00D + 1558, // cosh_20B + 1560, // textureProjLodOffset_00I30B00B10D + 1562, // normalize_30B + 1564, // smoothstep_30B30B30B + 1566, // bitfieldInsert_10D10D00D00D + 1568, // clamp_20B20B20B + 1570, // textureGrad_00L20B10B10B + 1572, // textureGrad_00R10B10B10B + 1574, // textureProjGrad_00I20B10B10B + 1576, // textureGather_00e20B + 1577, // texture2D_00M10B + 1578, // min_00D00D + 1580, // outerProduct_10B10B + 1582, // lessThanEqual_10D10D + 1584, // trunc_20B + 1586, // gl_MaxVaryingVectors + 1588, // textureProjOffset_00I30B10D00B + 1590, // textureSize_00d00D + 1592, // sin_00B + 1594, // gl_MaxVertexUniformVectors + 1596, // textureCubeLodEXT_00K20B00B + 1597, // textureGather_00T20B00D + 1599, // textureProj_00N20B + 1600, // uaddCarry_10E10E10E + 1602, // tan_10B + 1604, // textureLodOffset_00L20B00B10D + 1606, // atomicCounterIncrement_00G + 1608, // ldexp_20B20D + 1610, // greaterThanEqual_30D30D + 1612, // notEqual_20B20B + 1614, // imageLoad_01D20D + 1615, // textureProjLodOffset_00X30B00B10D + 1617, // isinf_20B + 1619, // cos_10B + 1621, // mix_30B30B30B + 1623, // texture_00e30B + 1625, // textureSize_00T00D + 1627, // textureGatherOffset_00X10B10D00D + 1629, // equal_10E10E + 1631, // min_10E10E + 1633, // textureProjGradOffset_00Y30B20B20B20D + 1635, // textureGrad_00T20B20B20B + 1637, // memoryBarrierImage_ + 1639, // textureProjOffset_00J30B20D + 1641, // EmitVertex_ + 1642, // textureProjOffset_00d30B10D00B + 1644, // round_10B + 1646, // textureProjOffset_00d30B10D + 1648, // notEqual_10E10E + 1650, // textureProj_00R30B + 1652, // matrixCompMult_50B50B + 1654, // equal_20F20F + 1656, // gl_MaxFragmentInputVectors + 1658, // equal_30B30B + 1660, // textureLod_00U20B00B + 1662, // usubBorrow_10E10E10E + 1664, // equal_10B10B + 1666, // textureProjGradOffset_00I20B10B10B10D + 1668, // texture2DProjLod_00I30B00B + 1670, // isnan_10B + 1672, // uaddCarry_20E20E20E + 1674, // max_10B10B + 1676, // atomicMax_00E00E + 1678, // gl_PointSize + 1680, // atomicMin_00D00D + 1682, // textureSize_00X00D + 1684, // greaterThan_10B10B + 1686, // asin_10B + 1688, // textureGather_00d10B00B + 1690, // trunc_10B + 1692, // gl_MaxComputeAtomicCounters + 1694, // textureProj_00X30B + 1696, // gl_MaxVertexAtomicCounters + 1698, // length_20B + 1700, // bitfieldInsert_30E30E00D00D + 1702, // textureOffset_00S20B20D + 1704, // textureProjOffset_00X20B10D + 1706, // clamp_30D00D00D + 1708, // clamp_10B00B00B + 1710, // textureProj_00R20B + 1712, // imageStore_01F20D30D + 1713, // textureProj_00I20B00B + 1715, // greaterThan_10E10E + 1717, // textureProjOffset_00R30B10D00B + 1719, // dFdy_00B + 1722, // min_30D00D + 1724, // floatBitsToInt_00B + 1726, // sign_10B + 1728, // max_00E00E + 1730, // texture_00a20B00B + 1732, // texture_00M10B00B + 1733, // smoothstep_20B20B20B + 1735, // textureCubeLod_00K20B00B + 1737, // textureOffset_00J20B20D + 1739, // texelFetch_00J20D00D + 1741, // textureProj_00M20B00B + 1742, // floatBitsToUint_00B + 1744, // textureProjGradOffset_00R30B10B10B10D + 1746, // textureLod_00K20B00B + 1748, // textureProjOffset_00X30B10D00B + 1750, // cos_20B + 1752, // exp2_00B + 1754, // radians_30B + 1756, // texture2DRectProj_00O20B + 1757, // tan_20B + 1759, // textureGather_00T20B + 1761, // textureGather_00a20B00D + 1763, // textureProjGradOffset_00J30B20B20B20D + 1765, // asinh_10B + 1767, // textureProjGrad_00X30B10B10B + 1769, // floor_00B + 1771, // gl_DrawID + 1772, // atomicOr_00D00D + 1774, // texture3DLod_00J20B00B }; using Ext = TExtension; @@ -13715,6 +13839,7 @@ constexpr UnmangledEntry unmangled[] = { {"faceforward", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL}, {"abs", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL}, {"max", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL}, + {"subpassLoad", Ext::UNDEFINED, Ext::UNDEFINED, 310, 460, Shader::ALL}, {"unpackSnorm2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 420, Shader::ALL}, {"log2", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL}, {"textureGrad", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL}, @@ -14307,7 +14432,7 @@ namespace { uint16_t GetNextRuleIndex(uint32_t nameHash) { - if (nameHash == 937 - 1) + if (nameHash == 943 - 1) return ArraySize(BuiltInArray::kRules); return BuiltInArray::kMangledOffsets[nameHash + 1]; } @@ -14319,7 +14444,7 @@ const TSymbol *TSymbolTable::findBuiltIn(const ImmutableString &name, int shader return nullptr; uint32_t nameHash = name.mangledNameHash(); - if (nameHash >= 937) + if (nameHash >= 943) return nullptr; const char *actualName = BuiltInArray::kMangledNames[nameHash]; @@ -14341,7 +14466,7 @@ bool TSymbolTable::isUnmangledBuiltInName(const ImmutableString &name, return false; uint32_t nameHash = name.unmangledNameHash(); - if (nameHash >= 150) + if (nameHash >= 151) return false; return BuiltInArray::unmangled[nameHash].matches(name, mShaderSpec, shaderVersion, mShaderType, diff --git a/src/compiler/translator/SymbolTable_autogen.cpp b/src/compiler/translator/SymbolTable_autogen.cpp index 30b30b8400..fcb99f9cf8 100644 --- a/src/compiler/translator/SymbolTable_autogen.cpp +++ b/src/compiler/translator/SymbolTable_autogen.cpp @@ -2,7 +2,7 @@ // Generated by gen_builtin_symbols.py using data from builtin_variables.json and // builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // @@ -23375,6 +23375,7 @@ constexpr SymbolRule kRules[] = { Rule::Get(&imageAtomicCompSwap_01M00D00D00D), Rule::Get(&imageAtomicAnd_01T20D00D00E), Rule::Get(&imageAtomicAnd_01T20D00D00D), + Rule::Get(&subpassLoad_01l00D), Rule::Get(&subpassLoad_01l00D), Rule::Get(&imageStore_01N10D30B), Rule::Get(&acosh_30B), @@ -23752,6 +23753,7 @@ constexpr SymbolRule kRules[] = { Rule::Get(&textureProjOffset_00R20B10D), Rule::Get(&imageStore_01V20D00D30E), Rule::Get(&imageAtomicCompSwap_01T20D00D00E00E), + Rule::Get(&subpassLoad_01m00D), Rule::Get(&subpassLoad_01m00D), Rule::Get(&textureOffset_00I10B10D), Rule::Get(&textureOffset_00I10B10D), @@ -24773,6 +24775,7 @@ constexpr SymbolRule kRules[] = { Rule::Get(&textureQueryLod_00s20B), Rule::Get(&imageAtomicAnd_01N10D00D), Rule::Get(&texture_00v10B), + Rule::Get(&subpassLoad_01n00D), Rule::Get(&subpassLoad_01n00D), Rule::Get(&textureProjLodOffset_00g10B00B00D), Rule::Get(&step_10C10C), @@ -25292,7 +25295,9 @@ constexpr SymbolRule kRules[] = { Rule::Get(&imageLoad_01U20D00D), Rule::Get(&textureProjLod_00J30B00B), Rule::Get(&textureProjLod_00J30B00B), + Rule::Get(&subpassLoad_01i), Rule::Get(&subpassLoad_01i), + Rule::Get(&subpassLoad_01k), Rule::Get(&subpassLoad_01k), Rule::Get(&transpose_90B), Rule::Get(&transpose_90B), @@ -25332,6 +25337,7 @@ constexpr SymbolRule kRules[] = { Rule::Get(&imageLoad_01R10D00D), Rule::Get(&imageAtomicAdd_01H20D00D), Rule::Get(&imageAtomicAdd_01H20D00E), + Rule::Get(&subpassLoad_01j), Rule::Get(&subpassLoad_01j), Rule::Get(&dot_00B00B), Rule::Get(&dot_00B00B), @@ -28431,1736 +28437,1736 @@ constexpr uint16_t kMangledOffsets[] = { 575, // imageAtomicAnd_01T20D00D00E 576, // imageAtomicAnd_01T20D00D00D 577, // subpassLoad_01l00D - 578, // imageStore_01N10D30B - 579, // acosh_30B - 581, // imageAtomicOr_01Y10D00E - 582, // imageAtomicOr_01Y10D00D - 583, // textureGradOffset_00X10B10B10B10D - 585, // texelFetchOffset_00X10D00D10D - 587, // packUnorm2x16_10B - 589, // texture_00h20B00B - 590, // umulExtended_20E20E20E20E - 592, // texture_00m20B00B - 593, // textureProjGradOffset_00g30B00B00B00D - 594, // textureProj_00o30B00B - 595, // textureCubeLod_00K20B00B - 597, // textureSize_00L00D - 599, // imageAtomicXor_01L00D00E - 600, // max_20E00E - 602, // textureProj_00S30B - 604, // dFdy_30B - 607, // imageAtomicMin_01W10D00D - 608, // isinf_10C - 609, // isinf_10B - 611, // textureGatherOffsets_00a20B70D - 612, // gl_MaxVertexTextureImageUnits - 614, // greaterThanEqual_30B30B - 616, // texture2DProjLodEXT_00I20B00B - 617, // gl_FrontFacing - 619, // imageStore_01C20D30D - 621, // textureProjOffset_00t10B00D00B - 622, // imageAtomicCompSwap_01Z20D00D00D - 623, // acos_10B - 625, // textureCube_00K20B00B - 627, // lessThan_10B10B - 629, // gl_MaxComputeAtomicCounterBuffers - 631, // textureSize_00f00D - 633, // imageLoad_01B20D - 635, // texelFetchOffset_00h10D00D00D - 636, // mod_20C00C - 637, // imageAtomicAnd_01g00D00D - 638, // gl_LastFragColorARM - 639, // lessThanEqual_20D20D - 641, // textureQueryLod_00k20B - 642, // textureProjLod_00Y30B00B - 644, // gl_SecondaryFragColorEXT - 645, // imageAtomicAnd_01U20D00D00D - 646, // imageAtomicAnd_01U20D00D00E - 647, // gl_BaseInstance - 648, // transpose_B0B - 650, // imageAtomicXor_01b20D00E - 651, // mix_20F20F20F - 652, // smoothstep_00B00B30B - 654, // imageAtomicExchange_01M00D00B - 655, // imageAtomicExchange_01F20D00E - 656, // imageAtomicExchange_01M00D00D - 657, // imageAtomicExchange_01M00D00E - 658, // imageAtomicCompSwap_01F20D00E00E - 659, // texelFetch_00N10D00D - 660, // textureSize_00a00D - 662, // imageAtomicXor_01T20D00D00D - 663, // textureProjOffset_00Y30B20D - 665, // bitCount_30E - 667, // atan_30B - 669, // textureGatherOffsets_00R10B70D00D - 670, // imageAtomicMax_01b20D00D - 671, // ceil_10B - 673, // textureSize_00S00D - 675, // imageAtomicExchange_01S10D00D00B - 676, // atomicCounterDecrement_00G - 678, // ceil_30B - 680, // textureSize_00t00D - 681, // memoryBarrier_ - 683, // texture_00f30B - 685, // imageSamples_01R - 686, // texelFetch_00R10D00D - 688, // sign_20B - 690, // smoothstep_30B30B30B - 692, // textureGrad_00R10B10B10B - 694, // min_00D00D - 696, // textureProj_00t10B00B - 697, // imageAtomicCompSwap_01W10D00E00E - 698, // imageAtomicAdd_01V20D00D00E - 699, // ldexp_20B20D - 701, // greaterThanEqual_30D30D - 703, // imageLoad_01D20D - 705, // findLSB_10E - 707, // texture_00Z20B00B - 709, // imageAtomicXor_01S10D00D00E - 710, // imageAtomicXor_01S10D00D00D - 711, // cos_10B - 713, // texelFetch_00v10D - 714, // texture_00e30B - 716, // imageStore_01W10D30B - 717, // textureSize_00T00D - 719, // imageAtomicAnd_01g00D00E - 720, // textureSize_00u00D - 721, // textureProjGradOffset_00Y30B20B20B20D - 723, // noise3_30B - 724, // textureGrad_00T20B20B20B - 726, // texture1DProj_00g10B00B - 727, // textureProjOffset_00d30B10D00B - 729, // textureGatherOffsets_00X10B70D - 730, // imageAtomicXor_01U20D00D00D - 731, // imageAtomicXor_01U20D00D00E - 732, // imageAtomicAdd_01h00D00D - 733, // imageAtomicAdd_01h00D00E - 734, // matrixCompMult_50B50B - 736, // equal_30B30B - 738, // imageAtomicExchange_01E20D00B - 739, // textureLod_00U20B00B - 741, // imageAtomicXor_01I20D00E - 742, // imageAtomicXor_01I20D00D - 743, // textureOffset_00h10B00D - 744, // textureLod_00p10B00B - 745, // max_20C20C - 746, // max_10B10B - 748, // gl_PointSize - 750, // imageAtomicCompSwap_01B20D00E00E - 751, // asin_10B - 753, // sinh_00B - 755, // imageAtomicAdd_01g00D00D - 756, // imageAtomicCompSwap_01h00D00E00E - 757, // textureOffset_00S20B20D - 759, // fma_20C20C20C - 760, // imageAtomicCompSwap_01N10D00D00D - 761, // textureProj_00R20B - 763, // greaterThan_10E10E - 765, // imageAtomicAnd_01M00D00E - 766, // imageAtomicAnd_01M00D00D - 767, // EmitVertex_ - 769, // smoothstep_20B20B20B - 771, // textureSamples_00b - 772, // textureOffset_00J20B20D - 774, // texelFetch_00J20D00D - 776, // imageAtomicExchange_01V20D00D00E - 777, // imageAtomicExchange_01V20D00D00B - 778, // imageAtomicCompSwap_01Y10D00E00E - 779, // imageAtomicExchange_00y10D00B - 780, // imageAtomicExchange_00y10D00D - 781, // imageAtomicExchange_00y10D00E - 782, // gl_ViewID_OVR - 783, // radians_30B - 785, // fract_30B - 787, // imageAtomicAdd_01B20D00D - 788, // imageAtomicAdd_01B20D00E - 789, // imageAtomicMin_01H20D00E - 790, // uaddCarry_20E20E20E - 792, // textureProjGrad_00X30B10B10B - 794, // textureSamples_00P - 795, // textureProjOffset_00v20B10D - 796, // shadow2D_00d20B00B - 797, // texelFetchOffset_00o00D00D00D - 798, // textureSamples_00V - 799, // textureSamples_00W - 800, // textureProjGrad_00q30B10B10B - 801, // textureGatherOffset_00O10B10D - 802, // clamp_10D00D00D - 804, // gl_MaxComputeImageUniforms - 806, // textureLod_00L20B00B - 808, // imageAtomicExchange_01A10D00B - 809, // imageAtomicCompSwap_01V20D00D00D00D - 810, // imageAtomicExchange_01A10D00E - 811, // imageAtomicExchange_01A10D00D - 812, // imageAtomicXor_01b20D00D - 813, // texture_00n20B - 814, // ldexp_20C20D - 815, // clamp_00E00E00E - 817, // length_20B - 819, // ldexp_00B00D - 821, // imageAtomicExchange_01N10D00E - 822, // bitfieldInsert_00D00D00D00D - 824, // textureProjGrad_00Y30B20B20B - 826, // roundEven_30B - 828, // roundEven_30C - 829, // acosh_20B - 831, // atanh_10B - 833, // length_20C - 834, // clamp_10B10B10B - 836, // textureGatherOffset_00L20B10D00D - 838, // bitCount_00D - 840, // bitCount_00E - 842, // imageAtomicExchange_01N10D00B - 843, // floatBitsToInt_30B - 845, // max_20B00B - 847, // imageAtomicAdd_00z10D00D - 848, // texelFetchOffset_00Y20D00D20D - 850, // atomicExchange_00E00E - 852, // imageAtomicXor_01h00D00D - 853, // imageAtomicXor_01h00D00E - 854, // ldexp_30C30D - 855, // texture_00o00B - 856, // textureGatherOffsets_00X10B70D00D - 857, // lessThanEqual_20B20B - 859, // min_10B00B - 861, // textureQueryLod_00f10B - 862, // smoothstep_10C10C10C - 863, // textureGatherOffsets_00U20B70D - 864, // imageAtomicAnd_01L00D00D - 865, // imageAtomicAnd_01L00D00E - 866, // mix_30F30F30F - 867, // abs_20D - 869, // abs_20C - 870, // abs_20B - 872, // lessThanEqual_10B10B - 874, // imageAtomicOr_01f00D00E - 875, // imageAtomicOr_01f00D00D - 876, // imageAtomicOr_01a20D00D - 877, // mix_00B00B00B - 879, // mix_00B00B00F - 881, // textureGather_00s30B00D - 882, // textureProj_00I20B - 884, // imageAtomicExchange_01B20D00B - 885, // textureLodOffset_00p10B00B00D - 886, // gl_MaxVertexAtomicCounterBuffers - 888, // unpackDouble2x32_00C - 889, // acos_00B - 891, // textureGradOffset_00J20B20B20B20D - 893, // fma_00C00C00C - 894, // texture2DGradEXT_00I10B10B10B - 895, // imageAtomicCompSwap_01G20D00D00D - 896, // imageAtomicAnd_01I20D00D - 897, // texture2DProjGradEXT_00I30B10B10B - 898, // fma_30B30B30B - 899, // imageAtomicAdd_01L00D00D - 900, // texture_00i20B00B - 901, // gl_MaxComputeWorkGroupCount - 903, // clamp_20C00C00C - 904, // imageAtomicMax_01X10D00E - 905, // imageAtomicCompSwap_00y10D00E00E - 906, // mix_30E30E30F - 907, // imageAtomicMax_01b20D00E - 908, // imageAtomicMin_01G20D00D - 909, // imageAtomicMin_01G20D00E - 910, // textureGatherOffsets_00I10B70D - 911, // imageAtomicExchange_01S10D00D00D - 912, // atan_20B - 914, // imageAtomicCompSwap_01Z20D00E00E - 915, // interpolateAtSample_30B00D - 916, // dFdxCoarse_30B - 917, // texture_00M10B - 918, // min_10B10B - 920, // textureLodOffset_00h10B00B00D - 921, // EndStreamPrimitive_00D - 922, // pow_10B10B - 924, // texture_00Y20B - 926, // imageAtomicXor_01P10D00D - 927, // texture_00X10B00B - 929, // frexp_00B00D - 931, // texture2D_00I10B - 933, // imageLoad_01O10D - 934, // ceil_20C - 935, // ceil_20B - 937, // imageAtomicMin_01b20D00E - 938, // imageAtomicMin_01b20D00D - 939, // imageAtomicMax_01P10D00D - 940, // imageAtomicMax_01P10D00E - 941, // imageAtomicExchange_01P10D00B - 942, // textureProjOffset_00R20B10D - 944, // imageStore_01V20D00D30E - 945, // imageAtomicCompSwap_01T20D00D00E00E - 946, // subpassLoad_01m00D - 947, // textureOffset_00I10B10D - 949, // min_20B00B - 951, // reflect_00B00B - 953, // noise4_10B - 954, // sqrt_10C - 955, // sqrt_10B - 957, // imageAtomicXor_01Z20D00D - 958, // imageAtomicXor_01Z20D00E - 959, // clamp_20E20E20E - 961, // textureGradOffset_00g00B00B00B00D - 962, // textureGather_00q20B - 963, // noise3_00B - 964, // imageAtomicOr_01G20D00D - 965, // imageAtomicOr_01G20D00E - 966, // imageAtomicMin_01C20D00D - 967, // imageAtomicMin_01C20D00E - 968, // imageAtomicAnd_01F20D00E - 969, // textureProjLod_00d30B00B - 971, // imageStore_01a20D30D - 972, // imageLoad_01H20D - 974, // textureProjGradOffset_00I20B10B10B10D - 976, // interpolateAtSample_20B00D - 977, // reflect_10B10B - 979, // refract_10B10B00B - 981, // imageAtomicMax_01h00D00D - 982, // mix_20C20C20F - 983, // imageAtomicExchange_01X10D00D - 984, // imageAtomicExchange_01X10D00E - 985, // mix_20C20C20C - 986, // textureOffset_00v10B10D - 987, // imageAtomicMin_01P10D00D - 988, // sinh_30B - 990, // textureSize_00m00D - 991, // textureQueryLod_00e20B - 992, // asinh_20B - 994, // imageAtomicAdd_01C20D00D - 995, // imageAtomicCompSwap_01I20D00D00D - 996, // textureProj_00O20B - 998, // imageAtomicCompSwap_01M00D00E00E - 999, // frexp_10B10D - 1001, // inverse_50B - 1003, // dot_10B10B - 1005, // imageAtomicExchange_01T20D00D00D - 1006, // imageAtomicExchange_01T20D00D00E - 1007, // noise2_00B - 1008, // textureProjGradOffset_00o10B00B00B00D - 1009, // radians_20B - 1011, // atomicCompSwap_00E00E00E - 1013, // textureGrad_00I00B00B00B - 1014, // textureGrad_00Y20B20B20B - 1016, // gl_MaxVertexUniformVectors - 1018, // textureOffset_00o00B00D00B - 1019, // ftransform_ - 1020, // textureProj_00X20B - 1022, // textureProjOffset_00n30B10D - 1023, // gl_MaxGeometryUniformComponents - 1024, // greaterThanEqual_20E20E - 1026, // textureProj_00M20B - 1027, // texture3DProjLod_00J30B00B - 1029, // isinf_30C - 1030, // imageAtomicAdd_01S10D00D00D - 1031, // mix_10D10D10F - 1032, // textureProjGrad_00g10B00B00B - 1033, // log_20B - 1035, // imageAtomicMax_01D20D00E - 1036, // imageAtomicMax_01D20D00D - 1037, // textureOffset_00h10B00D00B - 1038, // modf_30B30B - 1040, // roundEven_20C - 1041, // roundEven_20B - 1043, // outerProduct_30B10B - 1045, // textureProj_00J30B - 1047, // imageAtomicOr_00y10D00D - 1048, // imageAtomicOr_00y10D00E - 1049, // imageAtomicOr_01F20D00E - 1050, // imageAtomicOr_01F20D00D - 1051, // textureLodOffset_00t00B00B00D - 1052, // floatBitsToInt_20B - 1054, // texelFetch_00U20D00D - 1056, // max_00D00D - 1058, // atomicMin_00E00E - 1060, // imageAtomicMin_01Q10D00D00D - 1061, // imageAtomicMin_01Q10D00D00E - 1062, // textureGradOffset_00v10B10B10B10D - 1063, // textureGrad_00n20B10B10B - 1064, // imageLoad_01S10D00D - 1065, // max_20E20E - 1067, // imageAtomicCompSwap_01F20D00D00D - 1068, // abs_10D - 1070, // abs_10B - 1072, // abs_10C - 1073, // gl_FragDepthEXT - 1074, // imageAtomicAdd_01V20D00D00D - 1075, // gl_ClipDistance - 1076, // modf_30C30C - 1077, // imageAtomicExchange_01g00D00E - 1078, // textureGrad_00i20B00B00B - 1079, // textureProj_00g10B - 1080, // equal_20B20B - 1082, // textureProjLodOffset_00X20B00B10D - 1084, // max_30C00C - 1085, // imageAtomicMax_01W10D00D - 1086, // textureGatherOffsets_00a20B70D00D - 1087, // texture_00U20B00B - 1089, // textureProj_00I30B - 1091, // mix_00E00E00F - 1092, // imageAtomicCompSwap_01h00D00D00D - 1093, // mix_00D00D00F - 1094, // fwidthFine_00B - 1095, // texture_00i20B - 1096, // textureGradOffset_00a20B10B10B10D - 1098, // smoothstep_00B00B20B - 1100, // textureLod_00s30B00B - 1101, // imageAtomicOr_01C20D00D - 1102, // imageAtomicOr_01C20D00E - 1103, // imageAtomicXor_01g00D00E - 1104, // notEqual_30B30B - 1106, // imageAtomicCompSwap_01W10D00D00D - 1107, // textureGatherOffset_00f20B00B10D - 1109, // imageLoad_01T20D00D - 1110, // imageSize_00y - 1112, // imageAtomicMin_01W10D00E - 1113, // imageSize_00z - 1115, // mod_10C10C - 1116, // imageAtomicXor_01g00D00D - 1117, // faceforward_00C00C00C - 1118, // textureGrad_00a20B10B10B - 1120, // imageAtomicXor_01R10D00D00D - 1121, // imageAtomicXor_01T20D00D00E - 1122, // dFdxCoarse_00B - 1123, // imageAtomicMin_01a20D00D - 1124, // texture_00J20B00B - 1126, // refract_20B20B00B - 1128, // ceil_30C - 1129, // gl_MaxGeometryOutputComponents - 1130, // noise1_30B - 1131, // log2_30B - 1133, // textureProjGrad_00d30B10B10B - 1135, // mod_20C20C - 1136, // fract_30C - 1137, // texelFetch_00t00D00D - 1138, // imageAtomicXor_01L00D00D - 1139, // max_30E30E - 1141, // gl_MaxFragmentAtomicCounterBuffers - 1143, // gl_in - 1144, // noise4_00B - 1145, // distance_10C10C - 1146, // textureProjLodOffset_00J30B00B20D - 1148, // imageAtomicMax_01H20D00E - 1149, // imageAtomicMax_01H20D00D - 1150, // imageStore_01h00D30E - 1151, // textureGatherOffsets_00d10B00B70D - 1152, // texelFetch_00c20D00D - 1154, // sqrt_00B - 1156, // sqrt_00C - 1157, // textureProjLod_00R30B00B - 1159, // noise3_10B - 1160, // texelFetch_00q10D - 1161, // imageAtomicAnd_01F20D00D - 1162, // textureLod_00m20B00B - 1163, // textureProjOffset_00m30B00D00B - 1164, // textureProjGrad_00v30B10B10B - 1165, // clamp_20D20D20D - 1167, // imageAtomicMin_01P10D00E - 1168, // imageAtomicAdd_01C20D00E - 1169, // clamp_00C00C00C - 1170, // imageAtomicCompSwap_01b20D00E00E - 1171, // max_10E00E - 1173, // textureGrad_00U20B10B10B - 1175, // imageAtomicCompSwap_01B20D00D00D - 1176, // imageLoad_00z10D - 1178, // clamp_30C00C00C - 1179, // sinh_20B - 1181, // matrixCompMult_E0BE0B - 1182, // textureProjOffset_00q20B10D - 1183, // gl_PerVertex - 1184, // textureGradOffset_00m20B00B00B00D - 1185, // textureQueryLevels_00p - 1186, // gl_WorkGroupSize - 1188, // asinh_30B - 1190, // cross_20C20C - 1191, // textureGather_00a20B - 1193, // textureProjGradOffset_00O20B10B10B10D - 1194, // pow_30B30B - 1196, // imageAtomicCompSwap_01G20D00E00E - 1197, // smoothstep_10B10B10B - 1199, // textureProj_00O30B - 1201, // imageAtomicAdd_01Q10D00D00E - 1202, // textureQueryLod_00R10B - 1203, // imageAtomicCompSwap_01T20D00D00D00D - 1204, // imageAtomicAdd_01R10D00D00D - 1205, // imageAtomicAdd_01R10D00D00E - 1206, // imageAtomicExchange_01E20D00D - 1207, // imageAtomicExchange_01E20D00E - 1208, // isnan_00B - 1210, // isnan_00C - 1211, // imulExtended_10D10D10D10D - 1213, // textureProjGrad_00o10B00B00B - 1214, // refract_10C10C00B - 1215, // min_00E00E - 1217, // texture2DProj_00I30B - 1219, // textureGradOffset_00I10B10B10B10D - 1221, // textureLodOffset_00J20B00B20D - 1223, // notEqual_20B20B - 1225, // atomicCompSwap_00D00D00D - 1227, // imageAtomicOr_01W10D00E - 1228, // imageAtomicOr_01W10D00D - 1229, // textureOffset_00i20B00D - 1230, // dFdyFine_00B - 1231, // textureLod_00a20B00B - 1233, // textureProj_00N30B - 1234, // refract_30C30C00B - 1235, // equal_30D30D - 1237, // packSnorm2x16_10B - 1239, // floatBitsToUint_30B - 1241, // imageLoad_00y10D - 1243, // textureOffset_00R10B10D - 1245, // textureProjGrad_00q20B10B10B - 1246, // textureProjGradOffset_00R20B10B10B10D - 1248, // ldexp_30B30D - 1250, // max_30B00B - 1252, // imageAtomicAdd_01Q10D00D00D - 1253, // atomicCounterOr_00G00E - 1254, // step_30B30B - 1256, // imageAtomicOr_01T20D00D00D - 1257, // imageAtomicOr_01T20D00D00E - 1258, // textureProj_00I30B00B - 1260, // imageAtomicExchange_01D20D00E - 1261, // textureOffset_00g00B00D00B - 1262, // imageAtomicExchange_01D20D00B - 1263, // imageAtomicMin_01g00D00E - 1264, // abs_00D - 1266, // abs_00C - 1267, // abs_00B - 1269, // textureLod_00R10B00B - 1271, // dFdxCoarse_10B - 1272, // texture1D_00g00B - 1273, // frexp_10C10D - 1274, // imageAtomicMax_01B20D00D - 1275, // imageAtomicAdd_01g00D00E - 1276, // texture2DLod_00I10B00B - 1278, // textureProjGradOffset_00X20B10B10B10D - 1280, // round_20C - 1281, // EndPrimitive_ - 1283, // step_00B30B - 1285, // round_20B - 1287, // equal_30E30E - 1289, // imageAtomicCompSwap_01R10D00D00E00E - 1290, // step_00C20C - 1291, // dot_00C00C - 1292, // max_30C30C - 1293, // atomicOr_00D00D - 1295, // texture2DProj_00M20B - 1296, // notEqual_10D10D - 1298, // textureSize_00V - 1301, // imageAtomicAnd_01h00D00D - 1302, // min_20C00C - 1303, // imageAtomicAdd_01G20D00E - 1304, // imageAtomicAdd_01G20D00D - 1305, // findLSB_30D - 1307, // findLSB_30E - 1309, // textureProj_00X20B00B - 1311, // shadow2D_00d20B - 1312, // imageAtomicAdd_01N10D00E - 1313, // imageAtomicAdd_01N10D00D - 1314, // textureGatherOffset_00U20B10D - 1316, // faceforward_10B10B10B - 1318, // imageAtomicAnd_01h00D00E - 1319, // min_10D00D - 1321, // imageAtomicOr_01B20D00E - 1322, // imageAtomicOr_01B20D00D - 1323, // EmitStreamVertex_00D - 1324, // imageAtomicCompSwap_01J20D00D00D - 1325, // all_20F - 1327, // imageSize_01J - 1329, // imageSize_01K - 1330, // imageSize_01H - 1332, // imageSize_01I - 1334, // packHalf2x16_10B - 1336, // textureProj_00I20B00B - 1338, // imageSize_01L - 1339, // imageSize_01M - 1340, // imageSize_01B - 1342, // imageSize_01C - 1344, // texelFetch_00r00D - 1345, // imageSize_01F - 1347, // imageSize_01G - 1349, // imageSize_01D - 1351, // imageSize_01E - 1353, // imageSize_01Z - 1354, // imageAtomicExchange_01L00D00B - 1355, // imageAtomicMax_01Z20D00E - 1356, // texelFetch_00X10D00D - 1358, // notEqual_30F30F - 1360, // imageSize_01R - 1361, // imageSize_01S - 1362, // imageSize_01P - 1363, // imageSize_01Q - 1364, // imageSize_01V - 1365, // textureQueryLod_00g00B - 1366, // imageSize_01T - 1367, // imageSize_01U - 1368, // imageSize_01h - 1369, // fract_20C - 1370, // fract_20B - 1372, // textureGatherOffset_00X10B10D - 1374, // imageSize_01c - 1375, // imageSize_01a - 1376, // imageSize_01f - 1377, // texture2DProjGradEXT_00I20B10B10B - 1378, // imageSize_01d - 1379, // textureLod_00S20B00B - 1381, // step_30C30C - 1382, // imageAtomicMin_01J20D00D - 1383, // gl_FragDepth - 1385, // textureGather_00x30B - 1386, // mix_30B30B30F - 1388, // mix_30B30B30B - 1390, // textureGather_00Z20B00D - 1392, // noise4_30B - 1393, // sqrt_30C - 1394, // sqrt_30B - 1396, // imageStore_01E20D30B - 1398, // exp_00B - 1400, // max_30D30D - 1402, // gl_MaxGeometryTextureImageUnits - 1403, // interpolateAtCentroid_10B - 1404, // texture_00q10B - 1405, // textureSize_00M00D - 1406, // textureSamples_00c - 1407, // angle_BaseInstance - 1408, // mix_10F10F10F - 1409, // textureGradOffset_00U20B10B10B10D - 1411, // gl_Position - 1414, // textureGradOffset_00O10B10B10B10D - 1415, // textureProj_00M30B - 1416, // textureGradOffset_00L20B10B10B10D - 1418, // imageAtomicExchange_01V20D00D00D - 1419, // imageAtomicExchange_01J20D00B - 1420, // imageAtomicExchange_01J20D00E - 1421, // imageAtomicExchange_01J20D00D - 1422, // textureQueryLod_00l20B - 1423, // imageAtomicOr_01M00D00E - 1424, // dot_20B20B - 1426, // textureProjGrad_00v20B10B10B - 1427, // textureProjLod_00S30B00B - 1429, // textureProjGrad_00R20B10B10B - 1431, // imageAtomicMax_00z10D00E - 1432, // imageAtomicMax_00z10D00D - 1433, // normalize_30C - 1434, // normalize_30B - 1436, // textureOffset_00O10B10D - 1437, // textureProjGrad_00I20B10B10B - 1439, // textureGather_00e20B - 1440, // imageAtomicMax_01V20D00D00E - 1441, // texture2D_00M10B - 1442, // imageAtomicAdd_01a20D00E - 1443, // fwidthFine_30B - 1444, // textureGather_00K20B00D - 1446, // textureCubeLodEXT_00K20B00B - 1447, // textureGather_00T20B00D - 1449, // textureProj_00N20B - 1450, // textureQueryLod_00I10B - 1451, // imageAtomicCompSwap_01A10D00E00E - 1452, // dFdyFine_10B - 1453, // modf_10C10C - 1454, // imageAtomicMax_01E20D00D - 1455, // imageAtomicMax_01E20D00E - 1456, // textureProjLodOffset_00X30B00B10D - 1458, // textureProjLod_00m30B00B - 1459, // textureProjOffset_00g30B00D00B - 1460, // texelFetchOffset_00U20D00D10D - 1462, // imageAtomicCompSwap_00z10D00E00E - 1463, // imageAtomicMin_01D20D00E - 1464, // textureProjGradOffset_00q30B10B10B10D - 1465, // textureGradOffset_00d20B10B10B10D - 1467, // fwidthCoarse_20B - 1468, // textureProjOffset_00d30B10D - 1470, // equal_20F20F - 1472, // Empty - 1472, // mix_20C20C00C - 1473, // usubBorrow_10E10E10E - 1475, // imageStore_01S10D00D30E - 1476, // equal_10B10B - 1478, // imageAtomicExchange_01Q10D00D00D - 1479, // imageAtomicExchange_01Q10D00D00E - 1480, // imageAtomicExchange_01Q10D00D00B - 1481, // textureLodOffset_00U20B00B10D - 1483, // isnan_10C - 1484, // isnan_10B - 1486, // imageAtomicMin_01H20D00D - 1487, // imageAtomicXor_01A10D00D - 1488, // imageAtomicXor_01A10D00E - 1489, // imageAtomicCompSwap_01C20D00D00D - 1490, // textureGrad_00R00B00B00B - 1491, // imageAtomicXor_01W10D00D - 1492, // imageAtomicXor_01W10D00E - 1493, // atomicMin_00D00D - 1495, // textureSize_00X00D - 1497, // greaterThan_10B10B - 1499, // mix_00C00C00C - 1500, // clamp_30D00D00D - 1502, // mix_20E20E20F - 1503, // floatBitsToInt_10B - 1505, // textureProjOffset_00R30B10D00B - 1507, // textureGather_00U20B00D - 1509, // floatBitsToInt_00B - 1511, // imageLoad_01a20D - 1512, // floatBitsToUint_00B - 1514, // min_30C30C - 1515, // textureSamples_00Q - 1516, // textureGradOffset_00i20B00B00B00D - 1517, // imageAtomicXor_00z10D00D - 1518, // texture2DRectProj_00O20B - 1519, // modf_20C20C - 1520, // tan_20B - 1522, // floor_00C - 1523, // floor_00B - 1525, // imageAtomicMax_01O10D00E - 1526, // imageAtomicMax_01O10D00D - 1527, // mod_30C30C - 1528, // gl_DrawID - 1529, // textureOffset_00t00B00D - 1530, // texture3DLod_00J20B00B - 1532, // texture_00R10B00B - 1534, // modf_00B00B - 1536, // notEqual_20D20D - 1538, // imageAtomicExchange_01R10D00D00E - 1539, // imageAtomicExchange_01R10D00D00D - 1540, // ldexp_10C10D - 1541, // imageAtomicXor_00y10D00E - 1542, // imageAtomicXor_00y10D00D - 1543, // determinant_A0B - 1544, // textureLodOffset_00i20B00B00D - 1545, // imageStore_01D20D30E - 1547, // shadow1DLod_00m20B00B - 1548, // imageAtomicOr_01I20D00E - 1549, // distance_00C00C - 1550, // isnan_30B - 1552, // textureProjOffset_00o30B00D - 1553, // lessThanEqual_30D30D - 1555, // textureProj_00M30B00B - 1556, // texture2DProj_00M30B - 1557, // atomicCounterMax_00G00E - 1558, // atomicCounterExchange_00G00E - 1559, // textureGrad_00I10B10B10B - 1561, // step_00B20B - 1563, // texture2DProjLod_00I20B00B - 1565, // step_00C30C - 1566, // yuv_2_rgb_20B00H - 1567, // texelFetch_00b10D00D - 1570, // textureProj_00J30B00B - 1572, // textureGather_00R10B - 1574, // imageAtomicCompSwap_01K00D00E00E - 1575, // imageAtomicOr_01V20D00D00D - 1576, // imageAtomicOr_01V20D00D00E - 1577, // imageAtomicExchange_01P10D00D - 1578, // imageLoad_01L00D - 1579, // min_10D10D - 1581, // all_30F - 1583, // imageAtomicExchange_01P10D00E - 1584, // imageAtomicMax_01a20D00D - 1585, // imageAtomicAnd_01S10D00D00E - 1586, // imageAtomicAnd_01S10D00D00D - 1587, // angle_BaseVertex - 1588, // bitfieldReverse_20D - 1590, // bitfieldReverse_20E - 1592, // imageAtomicExchange_01I20D00D - 1593, // imageAtomicExchange_01I20D00E - 1594, // imageAtomicExchange_01I20D00B - 1595, // gl_MaxGeometryInputComponents - 1596, // texture_00u20B - 1597, // textureGather_00v20B - 1598, // fract_10B - 1600, // fract_10C - 1601, // textureGatherOffset_00O10B10D00D - 1602, // textureQueryLod_00K20B - 1603, // textureLodOffset_00I10B00B10D - 1605, // imageAtomicCompSwap_01S10D00D00E00E - 1606, // noise4_20B - 1607, // textureOffset_00U20B10D - 1609, // min_30B00B - 1611, // imageAtomicMax_00y10D00D - 1612, // imageAtomicMax_00y10D00E - 1613, // atomicAnd_00D00D - 1615, // gl_FragColor - 1617, // exp_10B - 1619, // textureOffset_00n20B10D - 1620, // bitCount_30D - 1622, // unpackUnorm2x16_00E - 1624, // sqrt_20B - 1626, // sqrt_20C - 1627, // textureGrad_00L20B10B10B - 1629, // interpolateAtCentroid_00B - 1630, // textureSize_00o00D - 1631, // gl_MaxImageUnits - 1633, // textureProjGrad_00o30B00B00B - 1634, // packUnorm4x8_30B - 1636, // texelFetch_00P10D00D - 1639, // texture_00O10B - 1641, // imageAtomicMin_01M00D00D - 1642, // imageAtomicMin_01M00D00E - 1643, // texture_00e30B00B - 1645, // imageAtomicMin_01O10D00E - 1646, // imageAtomicMin_01O10D00D - 1647, // imageAtomicExchange_01B20D00E - 1648, // imageAtomicExchange_01B20D00D - 1649, // gl_FragCoord - 1651, // imageAtomicMax_01X10D00D - 1652, // textureGrad_00u10B00B00B - 1653, // fwidthFine_20B - 1654, // textureQueryLod_00o00B - 1655, // imageAtomicAnd_01E20D00E - 1656, // imageAtomicAnd_01E20D00D - 1657, // normalize_00B - 1659, // normalize_00C - 1660, // clamp_10C00C00C - 1661, // imageAtomicCompSwap_01f00D00E00E - 1662, // imageAtomicOr_01A10D00E - 1663, // imageAtomicOr_01A10D00D - 1664, // imageAtomicOr_01K00D00D - 1665, // imageAtomicOr_01K00D00E - 1666, // atomicMax_00D00D - 1668, // textureProjGrad_00m30B00B00B - 1669, // imageAtomicAnd_01R10D00D00E - 1670, // floatBitsToUint_10B - 1672, // textureLod_00J20B00B - 1674, // imageAtomicExchange_01D20D00D - 1675, // textureGrad_00O10B10B10B - 1676, // dFdyFine_20B - 1677, // textureSize_00I00D - 1679, // gl_MaxComputeWorkGroupSize - 1681, // texelFetchOffset_00R10D00D10D - 1683, // dFdxFine_10B - 1684, // imageAtomicAnd_01K00D00E - 1685, // imageAtomicAnd_01K00D00D - 1686, // textureLodOffset_00X10B00B10D - 1688, // texture_00T20B00B - 1690, // textureProj_00q20B - 1691, // imageAtomicExchange_01K00D00D - 1692, // imageAtomicCompSwap_00y10D00D00D - 1693, // log_30B - 1695, // notEqual_20F20F - 1697, // allInvocationsEqual_00F - 1698, // imageStore_01G20D30E - 1700, // dFdyCoarse_30B - 1701, // textureProjLod_00R20B00B - 1703, // notEqual_30D30D - 1705, // fwidthCoarse_30B - 1706, // textureProjOffset_00I20B10D - 1708, // imageStore_01X10D30D - 1709, // textureQueryLevels_00l - 1710, // textureQueryLevels_00m - 1711, // textureQueryLevels_00o - 1712, // textureQueryLevels_00h - 1713, // textureQueryLevels_00i - 1714, // textureQueryLevels_00k - 1715, // textureQueryLevels_00d - 1716, // textureQueryLevels_00e - 1717, // textureQueryLevels_00f - 1718, // textureQueryLevels_00g - 1719, // gl_MaxDrawBuffers - 1721, // textureQueryLevels_00a - 1722, // atomicCounterMin_00G00E - 1723, // textureGradOffset_00u10B00B00B00D - 1724, // textureQueryLevels_00x - 1725, // textureQueryLevels_00t - 1726, // textureQueryLevels_00u - 1727, // imulExtended_20D20D20D20D - 1729, // any_30F - 1731, // distance_30B30B - 1733, // textureQueryLevels_00s - 1734, // textureQueryLevels_00L - 1735, // textureQueryLevels_00I - 1736, // textureQueryLevels_00J - 1737, // textureQueryLevels_00K - 1738, // imageAtomicExchange_01L00D00D - 1739, // imageAtomicAnd_01W10D00D - 1740, // imageAtomicAnd_01W10D00E - 1741, // texture3D_00J20B00B - 1743, // texture1DLod_00g00B00B - 1744, // textureQueryLevels_00X - 1745, // textureQueryLevels_00Y - 1746, // textureQueryLevels_00Z - 1747, // dot_30B30B - 1749, // textureQueryLevels_00T - 1750, // textureQueryLevels_00U - 1751, // textureQueryLevels_00R - 1752, // textureQueryLevels_00S - 1753, // gl_MaxTextureImageUnits - 1755, // usubBorrow_20E20E20E - 1757, // textureProj_00t30B00B - 1758, // shadow1DProj_00m30B00B - 1759, // clamp_30B00B00B - 1761, // texture2DRectProj_00O30B - 1762, // imageAtomicMax_01B20D00E - 1763, // max_10D00D - 1765, // textureGradOffset_00n20B10B10B10D - 1766, // clamp_00D00D00D - 1768, // floor_30B - 1770, // floor_30C - 1771, // imageStore_01P10D30E - 1772, // textureProjGradOffset_00S30B20B20B20D - 1774, // reflect_30C30C - 1775, // gl_PointCoord - 1777, // imageAtomicOr_01D20D00E - 1778, // textureGatherOffset_00v10B10D - 1779, // imageAtomicOr_01D20D00D - 1780, // packDouble2x32_10E - 1781, // clamp_10B00B00B - 1783, // imageStore_01F20D30D - 1785, // texelFetchOffset_00S20D00D20D - 1787, // lessThan_10D10D - 1789, // textureSize_00g00D - 1790, // textureGatherOffset_00U20B10D00D - 1792, // textureGatherOffset_00q10B10D00D - 1793, // textureGather_00I10B00D - 1795, // texture1DProjLod_00g30B00B - 1796, // texelFetch_00V10D00D - 1799, // imageAtomicExchange_01h00D00E - 1800, // imageAtomicExchange_01h00D00D - 1801, // atan_30B30B - 1803, // imageAtomicExchange_01h00D00B - 1804, // textureGatherOffsets_00R10B70D - 1805, // imageAtomicMax_01a20D00E - 1806, // textureProjLod_00g30B00B - 1807, // max_00B00B - 1809, // imageAtomicOr_01J20D00E - 1810, // imageAtomicOr_01J20D00D - 1811, // imageAtomicMax_01F20D00E - 1812, // imageAtomicMax_01F20D00D - 1813, // exp2_20B - 1815, // smoothstep_30C30C30C - 1816, // imageAtomicExchange_00z10D00B - 1817, // imageAtomicExchange_00z10D00E - 1818, // imageAtomicExchange_00z10D00D - 1819, // textureGatherOffsets_00n10B00B70D - 1820, // textureProjLod_00t10B00B - 1821, // imageAtomicExchange_01K00D00E - 1822, // imageAtomicExchange_01K00D00B - 1823, // gl_MaxCombinedTextureImageUnits - 1825, // textureSize_00k00D - 1826, // reflect_20B20B - 1828, // imageAtomicXor_01V20D00D00E - 1829, // imageAtomicXor_01V20D00D00D - 1830, // equal_10F10F - 1832, // imageLoad_01f00D - 1833, // acos_30B - 1835, // dFdx_10B - 1838, // bitfieldReverse_30E - 1840, // bitfieldReverse_30D - 1842, // texture1DProj_00g30B - 1843, // fract_00C - 1844, // fract_00B - 1846, // min_30E00E - 1848, // gl_MinProgramTexelOffset - 1850, // interpolateAtOffset_20B10B - 1851, // gl_MaxGeometryTotalOutputComponents - 1852, // reflect_30B30B - 1854, // textureGatherOffsets_00I10B70D00D - 1855, // interpolateAtCentroid_30B - 1856, // textureGather_00s30B - 1857, // imageAtomicXor_01X10D00E - 1858, // imageAtomicXor_01X10D00D - 1859, // imageStore_01Z20D30B - 1860, // texture1D_00g00B00B - 1861, // pow_00B00B - 1863, // mod_00B00B - 1865, // faceforward_30C30C30C - 1866, // roundEven_10B - 1868, // roundEven_10C - 1869, // atanh_30B - 1871, // textureLod_00K20B00B - 1873, // bitCount_20D - 1875, // bitCount_20E - 1877, // texelFetch_00L20D00D - 1879, // dFdxFine_00B - 1880, // distance_20B20B - 1882, // textureGradOffset_00q10B10B10B10D - 1883, // uaddCarry_30E30E30E - 1885, // textureSize_00U00D - 1887, // textureProjOffset_00o10B00D00B - 1888, // gl_MaxCombinedImageUniforms - 1890, // atomicCounterXor_00G00E - 1891, // imageAtomicOr_01g00D00D - 1892, // imageAtomicOr_01g00D00E - 1893, // gl_GlobalInvocationID - 1895, // gl_VertexID - 1897, // imageAtomicMin_01L00D00E - 1898, // smoothstep_20C20C20C - 1899, // imageAtomicCompSwap_01U20D00D00D00D - 1900, // atomicOr_00E00E - 1902, // imageAtomicExchange_01T20D00D00B - 1903, // mix_10B10B10F - 1905, // reflect_10C10C - 1906, // mix_10B10B10B - 1908, // textureProj_00Y30B00B - 1910, // imageAtomicMax_01I20D00D - 1911, // imageAtomicMax_01I20D00E - 1912, // frexp_20B20D - 1914, // textureGatherOffset_00I10B10D00D - 1916, // notEqual_20E20E - 1918, // textureLodOffset_00d20B00B10D - 1920, // inverse_A0B - 1922, // textureProjGrad_00X20B10B10B - 1924, // imageLoad_01J20D - 1926, // textureSize_00Y00D - 1928, // atan_20B20B - 1930, // usubBorrow_00E00E00E - 1932, // imageAtomicXor_01M00D00E - 1933, // imageAtomicXor_01M00D00D - 1934, // dFdyFine_30B - 1935, // textureQueryLod_00s20B - 1936, // imageAtomicAnd_01N10D00D - 1937, // texture_00v10B - 1938, // subpassLoad_01n00D - 1939, // textureProjLodOffset_00g10B00B00D - 1940, // step_10C10C - 1941, // textureQueryLod_00x20B - 1942, // fma_10B10B10B - 1943, // smoothstep_00B00B10B - 1945, // imageAtomicCompSwap_01a20D00D00D - 1946, // imageSize_01N - 1947, // textureLod_00u10B00B - 1948, // textureProjGradOffset_00m30B00B00B00D - 1949, // fwidthCoarse_00B - 1950, // dFdyCoarse_20B - 1951, // textureProjGradOffset_00o30B00B00B00D - 1952, // textureProj_00g30B00B - 1953, // bitfieldExtract_00E00D00D - 1955, // imageStore_01I20D30D - 1957, // distance_30C30C - 1958, // any_20F - 1960, // textureGatherOffsets_00L20B70D - 1961, // textureLod_00g00B00B - 1962, // sin_10B - 1964, // textureSize_00N00D - 1965, // mod_20B20B - 1967, // imageAtomicOr_01h00D00E - 1968, // imageAtomicOr_01h00D00D - 1969, // textureGrad_00k30B20B20B - 1970, // textureProjOffset_00o10B00D - 1971, // imageAtomicMin_01A10D00E - 1972, // imageAtomicMin_01A10D00D - 1973, // textureGradOffset_00f30B10B10B10D - 1975, // max_20D20D - 1977, // max_10D10D - 1979, // imageAtomicCompSwap_01N10D00E00E - 1980, // textureGradOffset_00t00B00B00B00D - 1981, // refract_30B30B00B - 1983, // floor_20C - 1984, // floor_20B - 1986, // texelFetchOffset_00t00D00D00D - 1987, // imageAtomicOr_01a20D00E - 1988, // matrixCompMult_F0BF0B - 1990, // umulExtended_10E10E10E10E - 1992, // texture_00d20B00B - 1994, // imageAtomicAdd_01Z20D00D - 1995, // imageAtomicAdd_01Z20D00E - 1996, // umulExtended_30E30E30E30E - 1998, // textureGatherOffsets_00q10B70D00D - 1999, // textureGradOffset_00Y20B20B20B20D - 2001, // textureGatherOffset_00a20B10D - 2003, // textureGrad_00f30B10B10B - 2005, // atomicCounterSubtract_00G00E - 2006, // imageAtomicXor_01C20D00E - 2007, // modf_20B20B - 2009, // imageAtomicAnd_01Y10D00D - 2010, // imageAtomicAnd_01Y10D00E - 2011, // noise1_00B - 2012, // imageLoad_01M00D - 2013, // imageAtomicCompSwap_01L00D00E00E - 2014, // length_30C - 2015, // length_30B - 2017, // mod_30B30B - 2019, // mix_10C10C10F - 2020, // imageAtomicMin_00z10D00E - 2021, // imageAtomicMin_00z10D00D - 2022, // exp2_30B - 2024, // allInvocations_00F - 2025, // max_20C00C - 2026, // texture3DProj_00J30B00B - 2028, // imageLoad_01Q10D00D - 2029, // textureProjLod_00X30B00B - 2031, // textureProjGradOffset_00I30B10B10B10D - 2033, // cosh_30B - 2035, // textureProj_00q30B - 2036, // textureOffset_00S20B20D00B - 2038, // usubBorrow_30E30E30E - 2040, // textureProjOffset_00R20B10D00B - 2042, // imageAtomicXor_01f00D00D - 2043, // imageAtomicXor_01f00D00E - 2044, // textureOffset_00t00B00D00B - 2045, // textureOffset_00i20B00D00B - 2046, // texture3DProj_00J30B - 2048, // matrixCompMult_B0BB0B - 2049, // lessThan_30B30B - 2051, // cross_20B20B - 2053, // imageSize_01O - 2054, // textureGrad_00q10B10B10B - 2055, // clamp_20B00B00B - 2057, // dFdx_00B - 2060, // findLSB_00D - 2062, // textureProjLodOffset_00o30B00B00D - 2063, // textureProj_00R20B00B - 2065, // acos_20B - 2067, // imageSize_01A - 2069, // imageAtomicAnd_01B20D00D - 2070, // max_20B20B - 2072, // lessThan_20E20E - 2074, // textureProjOffset_00g10B00D00B - 2075, // equal_30F30F - 2077, // sign_00C - 2078, // cosh_00B - 2080, // bitfieldExtract_00D00D00D - 2082, // imageAtomicMin_01E20D00D - 2083, // imageAtomicMin_01E20D00E - 2084, // textureLod_00Z20B00B - 2086, // sign_00D - 2088, // textureOffset_00Y20B20D - 2090, // transpose_60B - 2092, // imageAtomicExchange_01L00D00E - 2093, // imageAtomicAdd_01O10D00D - 2094, // imageAtomicAdd_01O10D00E - 2095, // faceforward_00B00B00B - 2097, // gl_NumWorkGroups - 2099, // imageAtomicOr_01O10D00E - 2100, // imageAtomicOr_01O10D00D - 2101, // imageAtomicAdd_01b20D00D - 2102, // interpolateAtCentroid_20B - 2103, // textureProjLodOffset_00R30B00B10D - 2105, // textureGrad_00h10B00B00B - 2106, // imageAtomicExchange_01U20D00D00B - 2107, // texture1DProj_00g30B00B - 2108, // textureQueryLod_00h00B - 2109, // imageAtomicExchange_01U20D00D00E - 2110, // modf_00C00C - 2111, // textureProjLod_00t30B00B - 2112, // textureOffset_00o00B00D - 2113, // imageAtomicExchange_01U20D00D00D - 2114, // textureGather_00U20B - 2116, // imageStore_01H20D30B - 2118, // texelFetch_00Q20D00D - 2120, // roundEven_00C - 2121, // roundEven_00B - 2123, // texelFetchOffset_00O10D10D - 2124, // atanh_20B - 2126, // clamp_10E00E00E - 2128, // dFdxFine_30B - 2129, // imageAtomicAdd_01L00D00E - 2130, // textureQueryLod_00J20B - 2131, // textureProjOffset_00X30B10D - 2133, // gl_MaxFragmentUniformVectors - 2135, // texture2DProjLod_00I30B00B - 2137, // interpolateAtOffset_10B10B - 2138, // max_10C10C - 2139, // texelFetch_00g00D00D - 2140, // abs_30B - 2142, // bitfieldInsert_10E10E00D00D - 2144, // packSnorm4x8_30B - 2146, // mix_10B10B00B - 2148, // imageSize_01b - 2149, // clamp_30D30D30D - 2151, // textureQueryLod_00d10B - 2152, // mod_10C00C - 2153, // imageAtomicMax_01G20D00D - 2154, // imageAtomicMax_01G20D00E - 2155, // imageStore_01R10D00D30D - 2156, // determinant_F0B - 2157, // transpose_A0B - 2159, // pow_20B20B - 2161, // imageSize_01g - 2162, // imageAtomicExchange_01G20D00B - 2163, // imageSize_01e - 2164, // imageAtomicExchange_01G20D00D - 2165, // imageAtomicExchange_01G20D00E - 2166, // imageLoad_01Y10D - 2167, // imageAtomicMax_01g00D00D - 2168, // imageAtomicMax_01g00D00E - 2169, // textureProj_00v30B - 2170, // textureProjGrad_00O20B10B10B - 2171, // log2_20B - 2173, // dot_30C30C - 2174, // fwidthCoarse_10B - 2175, // textureProjOffset_00I20B10D00B - 2177, // textureGatherOffsets_00U20B70D00D - 2178, // notEqual_10F10F - 2180, // textureGatherOffsets_00O10B70D - 2181, // smoothstep_00B00B00B - 2183, // textureProjLodOffset_00d30B00B10D - 2185, // imageAtomicAnd_01P10D00E - 2186, // imageAtomicAnd_01P10D00D - 2187, // textureProjLodOffset_00I30B00B10D - 2189, // gl_MaxCombinedAtomicCounters - 2191, // bitfieldInsert_10D10D00D00D - 2193, // imageAtomicAdd_00y10D00E - 2194, // imageAtomicAdd_00y10D00D - 2195, // imageAtomicAnd_01Q10D00D00E - 2196, // imageAtomicAnd_01Q10D00D00D - 2197, // imageAtomicCompSwap_01L00D00D00D - 2198, // textureGather_00k30B - 2199, // texture_00J20B - 2201, // lessThanEqual_10D10D - 2203, // textureProjOffset_00o30B00D00B - 2204, // gl_MaxVaryingVectors - 2206, // textureSize_00d00D - 2208, // sin_00B - 2210, // imageLoad_01N10D - 2211, // uaddCarry_10E10E10E - 2213, // imageAtomicOr_01Z20D00E - 2214, // imageAtomicOr_01Z20D00D - 2215, // mix_10C10C00C - 2216, // atomicCounterIncrement_00G - 2218, // imageAtomicAdd_01J20D00D - 2219, // imageAtomicAdd_01J20D00E - 2220, // imageAtomicCompSwap_01S10D00D00D00D - 2221, // imageAtomicMax_01W10D00E - 2222, // textureProj_00o10B00B - 2223, // imageAtomicAdd_01U20D00D00D - 2224, // imageAtomicAdd_01U20D00D00E - 2225, // textureProjOffset_00m30B00D - 2226, // imageAtomicExchange_01Y10D00B - 2227, // equal_10E10E - 2229, // imageAtomicExchange_01Y10D00E - 2230, // imageAtomicExchange_01Y10D00D - 2231, // imageAtomicExchange_01O10D00B - 2232, // imageAtomicExchange_01O10D00E - 2233, // textureProjOffset_00J30B20D - 2235, // imageAtomicXor_01D20D00D - 2236, // imageAtomicXor_01D20D00E - 2237, // notEqual_10E10E - 2239, // min_10C10C - 2240, // textureProjGrad_00t10B00B00B - 2241, // textureGather_00q20B00D - 2242, // imageAtomicAnd_01B20D00E - 2243, // imageAtomicAdd_01S10D00D00E - 2244, // imageAtomicCompSwap_01O10D00D00D - 2245, // shadow1DProjLod_00m30B00B - 2246, // imageAtomicMax_01f00D00E - 2247, // imageAtomicMax_01f00D00D - 2248, // texture_00u20B00B - 2249, // textureLodOffset_00R10B00B10D - 2251, // trunc_10B - 2253, // trunc_10C - 2254, // gl_MaxComputeAtomicCounters - 2256, // texelFetch_00u10D00D - 2257, // dot_20C20C - 2258, // gl_DepthRangeParameters - 2260, // textureGather_00f20B - 2261, // textureGatherOffsets_00L20B70D00D - 2262, // noise1_10B - 2263, // textureProjGrad_00g30B00B00B - 2264, // shadow2DProj_00d30B - 2265, // textureProj_00d30B00B - 2267, // sign_10B - 2269, // max_00E00E - 2271, // texture_00a20B00B - 2273, // textureProj_00o10B - 2274, // refract_20C20C00B - 2275, // textureProj_00M20B00B - 2276, // imageLoad_01A10D - 2278, // textureProjOffset_00X30B10D00B - 2280, // exp2_00B - 2282, // imageAtomicExchange_01H20D00B - 2283, // texelFetchOffset_00u10D00D00D - 2284, // imageAtomicCompSwap_01H20D00E00E - 2285, // imageAtomicExchange_01H20D00E - 2286, // imageAtomicExchange_01H20D00D - 2287, // textureGatherOffset_00q10B10D - 2288, // textureGather_00a20B00D - 2290, // imageStore_01Q10D00D30B - 2291, // ldexp_00C00D - 2292, // textureSize_00s00D - 2293, // imageAtomicXor_01P10D00E - 2294, // imageAtomicOr_01I20D00D - 2295, // texture_00N10B00B - 2296, // gl_PrimitiveID - 2298, // imageAtomicOr_01X10D00D - 2299, // imageAtomicCompSwap_01Y10D00D00D - 2300, // imageAtomicOr_01X10D00E - 2301, // textureProjGrad_00I30B10B10B - 2303, // gl_Layer - 2305, // textureOffset_00d20B10D - 2307, // dFdx_30B - 2310, // imageAtomicMin_01V20D00D00D - 2311, // imageAtomicMin_01V20D00D00E - 2312, // gl_LastFragColor - 2313, // textureProjGradOffset_00t30B00B00B00D - 2314, // min_20E20E - 2316, // asin_20B - 2318, // imageAtomicCompSwap_01U20D00D00E00E - 2319, // texture_00l30B00B - 2320, // texture1DProjLod_00g10B00B - 2321, // fwidth_10B - 2324, // dFdy_00B - 2327, // shadow2DLod_00d20B00B - 2328, // texture1DProj_00g10B - 2329, // lessThan_30E30E - 2331, // imulExtended_30D30D30D30D - 2333, // transpose_70B - 2335, // imulExtended_00D00D00D00D - 2337, // textureGatherOffsets_00q10B70D - 2338, // imageAtomicAdd_01F20D00D - 2339, // imageAtomicAdd_01F20D00E - 2340, // texture_00S20B00B - 2342, // textureLod_00Y20B00B - 2344, // faceforward_10C10C10C - 2345, // textureQueryLod_00u00B - 2346, // min_20D00D - 2348, // imageAtomicCompSwap_01P10D00D00D - 2349, // uintBitsToFloat_00E - 2351, // dFdxFine_20B - 2352, // imageAtomicMin_01L00D00D - 2353, // imageAtomicExchange_01g00D00D - 2354, // bitfieldInsert_20D20D00D00D - 2356, // mix_30B30B00B - 2358, // textureQueryLod_00U10B - 2359, // imageAtomicAnd_01N10D00E - 2360, // tanh_00B - 2362, // imageStore_00y10D30B - 2364, // max_10C00C - 2365, // matrixCompMult_D0BD0B - 2366, // gl_MaxClipDistances - 2367, // textureGatherOffsets_00v10B70D00D - 2368, // gl_MaxComputeUniformComponents - 2370, // imageAtomicAnd_01X10D00E - 2371, // shadow2DProjLod_00d30B00B - 2372, // imageAtomicAnd_01X10D00D - 2373, // min_30B30B - 2375, // reflect_20C20C - 2376, // texelFetch_00h10D00D - 2377, // memoryBarrierAtomicCounter_ - 2379, // bitfieldInsert_00E00E00D00D - 2381, // imageAtomicMin_01Z20D00E - 2382, // imageAtomicMin_01Z20D00D - 2383, // imageAtomicAdd_01b20D00E - 2384, // imageAtomicMin_01a20D00E - 2385, // textureGrad_00d20B10B10B - 2387, // atan_10B - 2389, // imageAtomicMax_01T20D00D00D - 2390, // imageAtomicMax_01T20D00D00E - 2391, // imageAtomicCompSwap_01g00D00D00D - 2392, // clamp_30C30C30C - 2393, // textureProj_00v20B - 2394, // step_00B10B - 2396, // textureProjLod_00I20B00B - 2398, // rgb_2_yuv_20B00H - 2399, // imageStore_01B20D30B - 2401, // imageLoad_01P10D - 2402, // texture_00T20B - 2404, // log2_10B - 2406, // imageAtomicAnd_01D20D00D - 2407, // imageAtomicAnd_01D20D00E - 2408, // findLSB_20E - 2410, // findLSB_20D - 2412, // imageAtomicMin_01f00D00E - 2413, // imageAtomicMin_01f00D00D - 2414, // noise2_30B - 2415, // imageAtomicOr_01U20D00D00E - 2416, // greaterThanEqual_10B10B - 2418, // imageAtomicXor_01K00D00D - 2419, // clamp_10D10D10D - 2421, // texelFetch_00M10D00D - 2422, // textureQueryLod_00Y20B - 2423, // transpose_F0B - 2425, // textureOffset_00Y20B20D00B - 2427, // textureGradOffset_00S20B20B20B20D - 2429, // imageAtomicOr_01U20D00D00D - 2430, // clamp_30E30E30E - 2432, // textureSize_00R00D - 2434, // imageAtomicAdd_01f00D00D - 2435, // acosh_10B - 2437, // imageAtomicAdd_01f00D00E - 2438, // imageLoad_01b20D - 2439, // textureOffset_00L20B10D00B - 2441, // mod_20B00B - 2443, // imageLoad_01U20D00D - 2444, // textureProjLod_00J30B00B - 2446, // subpassLoad_01i - 2447, // subpassLoad_01k - 2448, // transpose_90B - 2450, // mix_30C30C00C - 2451, // atomicAnd_00E00E - 2453, // max_20D00D - 2455, // texelFetchOffset_00I10D00D10D - 2457, // textureQueryLod_00L10B - 2458, // atomicCounter_00G - 2460, // textureGrad_00m20B00B00B - 2461, // noise3_20B - 2462, // bitfieldInsert_30D30D00D00D - 2464, // min_10C00C - 2465, // greaterThan_10D10D - 2467, // bitfieldExtract_10E00D00D - 2469, // textureGradOffset_00h10B00B00B00D - 2470, // imageAtomicMax_01V20D00D00D - 2471, // texture2D_00I10B00B - 2473, // greaterThan_20D20D - 2475, // noise1_20B - 2476, // textureProjLodOffset_00t10B00B00D - 2477, // textureProjOffset_00O20B10D - 2478, // trunc_00B - 2480, // length_10C - 2481, // length_10B - 2483, // imageLoad_01R10D00D - 2484, // imageAtomicAdd_01H20D00D - 2485, // imageAtomicAdd_01H20D00E - 2486, // subpassLoad_01j - 2487, // dot_00B00B - 2489, // tan_30B - 2491, // textureLod_00T20B00B - 2493, // textureProjGrad_00R30B10B10B - 2495, // exp2_10B - 2497, // textureProjOffset_00X20B10D00B - 2499, // textureProjGradOffset_00X30B10B10B10D - 2501, // matrixCompMult_A0BA0B - 2503, // textureGatherOffsets_00v10B70D - 2504, // textureGrad_00S20B20B20B - 2506, // round_30B - 2508, // round_30C - 2509, // anyInvocation_00F - 2510, // textureGrad_00x30B20B20B - 2511, // imageAtomicCompSwap_01D20D00E00E - 2512, // textureProjLod_00o30B00B - 2513, // smoothstep_00C00C10C - 2514, // interpolateAtSample_00B00D - 2515, // dFdx_20B - 2518, // texture_00L20B - 2520, // barrier_ - 2522, // imageAtomicAdd_01a20D00D - 2523, // textureGather_00k30B00D - 2524, // findMSB_20D - 2526, // textureGatherOffset_00L20B10D - 2528, // imageAtomicMin_01S10D00D00D - 2529, // imageAtomicMin_01S10D00D00E - 2530, // textureProjOffset_00S30B20D00B - 2532, // imageAtomicAdd_01D20D00D - 2533, // normalize_10C - 2534, // unpackSnorm4x8_00E - 2536, // imageLoad_01C20D - 2538, // imageAtomicMax_01C20D00D - 2539, // imageAtomicMax_01C20D00E - 2540, // textureGather_00l30B00B - 2541, // normalize_10B - 2543, // asin_30B - 2545, // isnan_20B - 2547, // isnan_20C - 2548, // fwidth_00B - 2551, // dFdy_10B - 2554, // imageAtomicAdd_01P10D00E - 2555, // imageAtomicAdd_01P10D00D - 2556, // max_30E00E - 2558, // textureLod_00d20B00B - 2560, // textureOffset_00q10B10D - 2561, // gl_LastFragData - 2563, // mod_10B00B - 2565, // texture_00g00B00B - 2566, // uintBitsToFloat_10E - 2568, // textureProjOffset_00t30B00D - 2569, // matrixCompMult_70B70B - 2570, // imageAtomicAdd_01I20D00D - 2571, // imageAtomicMax_01M00D00D - 2572, // imageAtomicMax_01M00D00E - 2573, // textureLod_00k30B00B - 2574, // imageAtomicAdd_01E20D00D - 2575, // textureLodOffset_00Y20B00B20D - 2577, // refract_00C00C00B - 2578, // log2_00B - 2580, // tanh_10B - 2582, // imageAtomicMin_01I20D00E - 2583, // textureLod_00h10B00B - 2584, // imageStore_01b20D30E - 2585, // textureGather_00O20B00D - 2586, // gl_LocalInvocationID - 2588, // clamp_00B00B00B - 2590, // textureGather_00d10B - 2591, // gl_MaxGeometryAtomicCounterBuffers - 2592, // textureOffset_00p10B00D00B - 2593, // imageAtomicExchange_01f00D00B - 2594, // clamp_10C10C10C - 2595, // outerProduct_20B10B - 2597, // textureProjOffset_00t10B00D - 2598, // isinf_20C - 2599, // textureGrad_00e30B20B20B - 2601, // textureSize_00J00D - 2603, // textureQueryLod_00Z20B - 2604, // dot_10C10C - 2605, // textureProjGrad_00n30B10B10B - 2606, // imageAtomicMin_01U20D00D00E - 2607, // imageAtomicMin_01U20D00D00D - 2608, // texture2DProjLodEXT_00I30B00B - 2609, // imageAtomicMax_01N10D00D - 2610, // imageAtomicMax_01N10D00E - 2611, // imageAtomicAnd_01b20D00D - 2612, // step_00B00B - 2614, // texture2DLodEXT_00I10B00B - 2615, // texture_00K20B00B - 2617, // textureProjGradOffset_00n30B10B10B10D - 2618, // textureGrad_00J20B20B20B - 2620, // imageAtomicCompSwap_01V20D00D00E00E - 2621, // textureOffset_00U20B10D00B - 2623, // intBitsToFloat_10D - 2625, // min_20C20C - 2626, // findLSB_10D - 2628, // textureProjLodOffset_00Y30B00B20D - 2630, // imageAtomicMax_01h00D00E - 2631, // texture3D_00J20B - 2633, // gl_SecondaryFragDataEXT - 2634, // imageAtomicAdd_01X10D00E - 2635, // faceforward_20C20C20C - 2636, // imageAtomicAnd_01O10D00E - 2637, // imageAtomicAdd_01X10D00D - 2638, // textureGather_00n10B00B - 2639, // textureGather_00X10B00D - 2641, // imageAtomicMax_01L00D00E - 2642, // imageAtomicMax_01L00D00D - 2643, // imageAtomicXor_01G20D00E - 2644, // imageAtomicXor_01G20D00D - 2645, // textureOffset_00a20B10D - 2647, // imageAtomicExchange_01X10D00B - 2648, // min_30E30E - 2650, // texture2DProj_00I30B00B - 2652, // textureQueryLod_00X10B - 2653, // imageAtomicAnd_01I20D00E - 2654, // textureCubeGradEXT_00K20B20B20B - 2655, // min_00B00B - 2657, // textureGradOffset_00o00B00B00B00D - 2658, // mix_30C30C30F - 2659, // mix_30C30C30C - 2660, // gl_WorkGroupID - 2662, // degrees_00B - 2664, // imageAtomicMax_01J20D00E - 2665, // imageAtomicMax_01J20D00D - 2666, // imageAtomicMin_01D20D00D - 2667, // atomicExchange_00D00D - 2669, // textureOffset_00m20B00D00B - 2670, // gl_MaxGeometryAtomicCounters - 2671, // textureOffset_00f30B10D - 2672, // imageAtomicExchange_01a20D00D - 2673, // imageAtomicExchange_01a20D00E - 2674, // imageAtomicExchange_01a20D00B - 2675, // matrixCompMult_60B60B - 2676, // imageAtomicCompSwap_00z10D00D00D - 2677, // textureProj_00t30B - 2678, // textureProjGradOffset_00t10B00B00B00D - 2679, // unpackSnorm2x16_00E - 2681, // lessThan_30D30D - 2683, // atan_00B00B - 2685, // textureQueryLod_00S20B - 2686, // notEqual_10B10B - 2688, // imageLoad_01G20D - 2690, // trunc_30B - 2692, // trunc_30C - 2693, // length_00B - 2695, // length_00C - 2696, // imageAtomicAnd_01H20D00D - 2697, // imageAtomicAnd_01H20D00E - 2698, // textureProj_00X30B00B - 2700, // imageAtomicExchange_01O10D00D - 2701, // imageAtomicCompSwap_01C20D00E00E - 2702, // tan_00B - 2704, // min_20E00E - 2706, // textureLod_00x30B00B - 2707, // textureSize_00j - 2708, // textureSize_00n - 2709, // imageAtomicXor_01F20D00D - 2710, // textureSize_00c - 2712, // textureSize_00b - 2715, // min_20B20B - 2717, // textureSize_00q - 2718, // textureSize_00r - 2719, // textureSize_00w - 2720, // textureSize_00v - 2721, // bitfieldInsert_20E20E00D00D - 2723, // gl_MaxProgramTexelOffset - 2725, // textureSize_00O - 2726, // imageAtomicAnd_01a20D00E - 2727, // imageAtomicMin_01g00D00D - 2728, // trunc_00C - 2729, // imageAtomicAnd_01a20D00D - 2730, // textureSize_00Q - 2732, // textureSize_00P - 2735, // imageAtomicAdd_01M00D00E - 2736, // imageAtomicAdd_01M00D00D - 2737, // textureSize_00W - 2739, // textureProjLod_00X20B00B - 2741, // smoothstep_00C00C00C - 2742, // atomicCounterAnd_00G00E - 2743, // faceforward_30B30B30B - 2745, // distance_20C20C - 2746, // atomicCounterAdd_00G00E - 2747, // imageStore_01O10D30D - 2748, // texture_00X10B - 2750, // ceil_00C - 2751, // ceil_00B - 2753, // distance_00B00B - 2755, // texelFetch_00O10D - 2756, // imageAtomicMin_01N10D00D - 2757, // imageAtomicMin_01N10D00E - 2758, // imageAtomicExchange_01C20D00D - 2759, // imageAtomicExchange_01C20D00E - 2760, // textureGrad_00s30B20B20B - 2761, // textureGather_00I10B - 2763, // imageAtomicExchange_01C20D00B - 2764, // min_30D30D - 2766, // findMSB_30E - 2768, // findMSB_30D - 2770, // textureGradOffset_00R10B10B10B10D - 2772, // fwidth_30B - 2775, // textureGrad_00K20B20B20B - 2777, // texelFetch_00S20D00D - 2779, // max_10B00B - 2781, // textureProjGradOffset_00R30B10B10B10D - 2783, // texelFetchOffset_00L20D00D10D - 2785, // isnan_30C - 2786, // transpose_50B - 2788, // greaterThanEqual_20D20D - 2790, // asinh_00B - 2792, // gl_PrimitiveIDIn - 2793, // textureGather_00Z20B - 2795, // textureGrad_00p10B00B00B - 2796, // textureProjOffset_00v30B10D - 2797, // greaterThan_20B20B - 2799, // min_20D20D - 2801, // texelFetchOffset_00g00D00D00D - 2802, // imageAtomicCompSwap_01g00D00E00E - 2803, // imageAtomicCompSwap_01Q10D00D00E00E - 2804, // imageAtomicXor_01O10D00D - 2805, // imageAtomicXor_01O10D00E - 2806, // tanh_20B - 2808, // textureProj_00m30B00B - 2809, // sin_20B - 2811, // smoothstep_00C00C30C - 2812, // textureSize_00l00D - 2813, // textureLod_00o00B00B - 2814, // imageAtomicMin_01K00D00D - 2815, // imageAtomicMin_01K00D00E - 2816, // textureOffset_00I10B10D00B - 2818, // imageAtomicAnd_00z10D00D - 2819, // imageAtomicAnd_00z10D00E - 2820, // gl_MaxAtomicCounterBufferSize - 2822, // textureOffset_00J20B20D00B - 2824, // lessThanEqual_20E20E - 2826, // gl_BaseVertex - 2827, // textureOffset_00g00B00D - 2828, // textureProj_00g30B - 2829, // imageLoad_01Z20D - 2830, // bitfieldInsert_30E30E00D00D - 2832, // bitfieldExtract_20E00D00D - 2834, // uintBitsToFloat_20E - 2836, // unpackUnorm4x8_00E - 2838, // mod_10B10B - 2840, // gl_LocalInvocationIndex - 2842, // imageAtomicAdd_01W10D00D - 2843, // imageAtomicAdd_01W10D00E - 2844, // gl_MaxVertexImageUniforms - 2846, // equal_20D20D - 2848, // gl_MaxCombinedAtomicCounterBuffers - 2850, // mix_10E10E10F - 2851, // textureGather_00R10B00D - 2853, // textureSize_00Z00D - 2855, // bitfieldExtract_30D00D00D - 2857, // imageAtomicXor_01J20D00D - 2858, // imageAtomicXor_01J20D00E - 2859, // imageStore_01T20D00D30B - 2860, // intBitsToFloat_00D - 2862, // textureLodOffset_00m20B00B00D - 2863, // findLSB_00E - 2865, // texelFetch_00p10D00D - 2866, // textureGather_00d10B00B - 2868, // shadow2DProj_00d30B00B - 2869, // inversesqrt_10B - 2871, // inversesqrt_10C - 2872, // abs_30D - 2874, // transpose_D0B - 2876, // abs_30C - 2877, // textureProjGrad_00O30B10B10B - 2878, // imageAtomicMax_01Z20D00D - 2879, // Empty - 2879, // imageLoad_01E20D - 2881, // textureProj_00N20B00B - 2882, // gl_FragData - 2884, // dFdxCoarse_20B - 2885, // clamp_20E00E00E - 2887, // textureProj_00d30B - 2889, // gl_MaxVertexOutputVectors - 2891, // shadow1D_00m20B - 2892, // textureOffset_00u10B00D - 2893, // cosh_10B - 2895, // sign_10C - 2896, // imageAtomicAnd_01G20D00E - 2897, // imageAtomicAnd_01G20D00D - 2898, // sign_10D - 2900, // umulExtended_00E00E00E00E - 2902, // gl_MaxVertexAttribs - 2904, // Empty - 2904, // texture_00a20B - 2906, // imageAtomicAdd_01T20D00D00E - 2907, // imageAtomicAdd_01T20D00D00D - 2908, // imageAtomicExchange_01g00D00B - 2909, // ldexp_10B10D - 2911, // textureProjOffset_00g30B00D - 2912, // texture_00Z20B - 2914, // degrees_10B - 2916, // texture_00K20B - 2918, // sinh_10B - 2920, // texture_00m20B - 2921, // imageAtomicXor_01C20D00D - 2922, // not_30F - 2924, // textureProjLodOffset_00I20B00B10D - 2926, // textureGather_00K20B - 2928, // textureGatherOffset_00R10B10D - 2930, // memoryBarrierShared_ - 2932, // clamp_20B20B20B - 2934, // texelFetch_00W20D00D - 2936, // textureProjLod_00g10B00B - 2937, // trunc_20C - 2938, // trunc_20B - 2940, // textureProjOffset_00I30B10D00B - 2942, // max_00C00C - 2943, // tan_10B - 2945, // texture_00g00B - 2946, // textureLodOffset_00L20B00B10D - 2948, // textureLodOffset_00u10B00B00D - 2949, // imageAtomicAnd_00y10D00E - 2950, // imageAtomicAnd_00y10D00D - 2951, // isinf_20B - 2953, // dFdyCoarse_10B - 2954, // textureGatherOffset_00X10B10D00D - 2956, // min_10E10E - 2958, // memoryBarrierImage_ - 2960, // round_10B - 2962, // round_10C - 2963, // textureProjLodOffset_00m30B00B00D - 2964, // textureProjGradOffset_00g10B00B00B00D - 2965, // textureProj_00R30B - 2967, // shadow1DProj_00m30B - 2968, // texture_00f30B00B - 2969, // fma_00B00B00B - 2970, // imageAtomicOr_01b20D00E - 2971, // imageAtomicOr_01b20D00D - 2972, // textureGatherOffset_00v10B10D00D - 2973, // atomicMax_00E00E - 2975, // imageAtomicMin_01B20D00E - 2976, // imageAtomicMin_01B20D00D - 2977, // textureQueryLod_00t00B - 2978, // textureProjOffset_00R30B10D - 2980, // textureProj_00X30B - 2982, // findMSB_00D - 2984, // findMSB_00E - 2986, // mix_20B20B20B - 2988, // imageAtomicCompSwap_01X10D00D00D - 2989, // frexp_30C30D - 2990, // mix_10C10C10C - 2991, // min_30D00D - 2993, // texture_00M10B00B - 2994, // fwidth_20B - 2997, // imageAtomicOr_01S10D00D00D - 2998, // imageAtomicOr_01S10D00D00E - 2999, // mod_30C00C - 3000, // imageAtomicAdd_01A10D00D - 3001, // imageAtomicAdd_01A10D00E - 3002, // texture_00o00B00B - 3003, // imageAtomicOr_01H20D00E - 3004, // imageAtomicOr_01H20D00D - 3005, // cos_20B - 3007, // textureGather_00T20B - 3009, // textureProjGradOffset_00J30B20B20B20D - 3011, // asinh_10B - 3013, // texelFetchOffset_00v10D10D - 3014, // imageAtomicXor_01E20D00E - 3015, // imageAtomicXor_01E20D00D + 579, // imageStore_01N10D30B + 580, // acosh_30B + 582, // imageAtomicOr_01Y10D00E + 583, // imageAtomicOr_01Y10D00D + 584, // textureGradOffset_00X10B10B10B10D + 586, // texelFetchOffset_00X10D00D10D + 588, // packUnorm2x16_10B + 590, // texture_00h20B00B + 591, // umulExtended_20E20E20E20E + 593, // texture_00m20B00B + 594, // textureProjGradOffset_00g30B00B00B00D + 595, // textureProj_00o30B00B + 596, // textureCubeLod_00K20B00B + 598, // textureSize_00L00D + 600, // imageAtomicXor_01L00D00E + 601, // max_20E00E + 603, // textureProj_00S30B + 605, // dFdy_30B + 608, // imageAtomicMin_01W10D00D + 609, // isinf_10C + 610, // isinf_10B + 612, // textureGatherOffsets_00a20B70D + 613, // gl_MaxVertexTextureImageUnits + 615, // greaterThanEqual_30B30B + 617, // texture2DProjLodEXT_00I20B00B + 618, // gl_FrontFacing + 620, // imageStore_01C20D30D + 622, // textureProjOffset_00t10B00D00B + 623, // imageAtomicCompSwap_01Z20D00D00D + 624, // acos_10B + 626, // textureCube_00K20B00B + 628, // lessThan_10B10B + 630, // gl_MaxComputeAtomicCounterBuffers + 632, // textureSize_00f00D + 634, // imageLoad_01B20D + 636, // texelFetchOffset_00h10D00D00D + 637, // mod_20C00C + 638, // imageAtomicAnd_01g00D00D + 639, // gl_LastFragColorARM + 640, // lessThanEqual_20D20D + 642, // textureQueryLod_00k20B + 643, // textureProjLod_00Y30B00B + 645, // gl_SecondaryFragColorEXT + 646, // imageAtomicAnd_01U20D00D00D + 647, // imageAtomicAnd_01U20D00D00E + 648, // gl_BaseInstance + 649, // transpose_B0B + 651, // imageAtomicXor_01b20D00E + 652, // mix_20F20F20F + 653, // smoothstep_00B00B30B + 655, // imageAtomicExchange_01M00D00B + 656, // imageAtomicExchange_01F20D00E + 657, // imageAtomicExchange_01M00D00D + 658, // imageAtomicExchange_01M00D00E + 659, // imageAtomicCompSwap_01F20D00E00E + 660, // texelFetch_00N10D00D + 661, // textureSize_00a00D + 663, // imageAtomicXor_01T20D00D00D + 664, // textureProjOffset_00Y30B20D + 666, // bitCount_30E + 668, // atan_30B + 670, // textureGatherOffsets_00R10B70D00D + 671, // imageAtomicMax_01b20D00D + 672, // ceil_10B + 674, // textureSize_00S00D + 676, // imageAtomicExchange_01S10D00D00B + 677, // atomicCounterDecrement_00G + 679, // ceil_30B + 681, // textureSize_00t00D + 682, // memoryBarrier_ + 684, // texture_00f30B + 686, // imageSamples_01R + 687, // texelFetch_00R10D00D + 689, // sign_20B + 691, // smoothstep_30B30B30B + 693, // textureGrad_00R10B10B10B + 695, // min_00D00D + 697, // textureProj_00t10B00B + 698, // imageAtomicCompSwap_01W10D00E00E + 699, // imageAtomicAdd_01V20D00D00E + 700, // ldexp_20B20D + 702, // greaterThanEqual_30D30D + 704, // imageLoad_01D20D + 706, // findLSB_10E + 708, // texture_00Z20B00B + 710, // imageAtomicXor_01S10D00D00E + 711, // imageAtomicXor_01S10D00D00D + 712, // cos_10B + 714, // texelFetch_00v10D + 715, // texture_00e30B + 717, // imageStore_01W10D30B + 718, // textureSize_00T00D + 720, // imageAtomicAnd_01g00D00E + 721, // textureSize_00u00D + 722, // textureProjGradOffset_00Y30B20B20B20D + 724, // noise3_30B + 725, // textureGrad_00T20B20B20B + 727, // texture1DProj_00g10B00B + 728, // textureProjOffset_00d30B10D00B + 730, // textureGatherOffsets_00X10B70D + 731, // imageAtomicXor_01U20D00D00D + 732, // imageAtomicXor_01U20D00D00E + 733, // imageAtomicAdd_01h00D00D + 734, // imageAtomicAdd_01h00D00E + 735, // matrixCompMult_50B50B + 737, // equal_30B30B + 739, // imageAtomicExchange_01E20D00B + 740, // textureLod_00U20B00B + 742, // imageAtomicXor_01I20D00E + 743, // imageAtomicXor_01I20D00D + 744, // textureOffset_00h10B00D + 745, // textureLod_00p10B00B + 746, // max_20C20C + 747, // max_10B10B + 749, // gl_PointSize + 751, // imageAtomicCompSwap_01B20D00E00E + 752, // asin_10B + 754, // sinh_00B + 756, // imageAtomicAdd_01g00D00D + 757, // imageAtomicCompSwap_01h00D00E00E + 758, // textureOffset_00S20B20D + 760, // fma_20C20C20C + 761, // imageAtomicCompSwap_01N10D00D00D + 762, // textureProj_00R20B + 764, // greaterThan_10E10E + 766, // imageAtomicAnd_01M00D00E + 767, // imageAtomicAnd_01M00D00D + 768, // EmitVertex_ + 770, // smoothstep_20B20B20B + 772, // textureSamples_00b + 773, // textureOffset_00J20B20D + 775, // texelFetch_00J20D00D + 777, // imageAtomicExchange_01V20D00D00E + 778, // imageAtomicExchange_01V20D00D00B + 779, // imageAtomicCompSwap_01Y10D00E00E + 780, // imageAtomicExchange_00y10D00B + 781, // imageAtomicExchange_00y10D00D + 782, // imageAtomicExchange_00y10D00E + 783, // gl_ViewID_OVR + 784, // radians_30B + 786, // fract_30B + 788, // imageAtomicAdd_01B20D00D + 789, // imageAtomicAdd_01B20D00E + 790, // imageAtomicMin_01H20D00E + 791, // uaddCarry_20E20E20E + 793, // textureProjGrad_00X30B10B10B + 795, // textureSamples_00P + 796, // textureProjOffset_00v20B10D + 797, // shadow2D_00d20B00B + 798, // texelFetchOffset_00o00D00D00D + 799, // textureSamples_00V + 800, // textureSamples_00W + 801, // textureProjGrad_00q30B10B10B + 802, // textureGatherOffset_00O10B10D + 803, // clamp_10D00D00D + 805, // gl_MaxComputeImageUniforms + 807, // textureLod_00L20B00B + 809, // imageAtomicExchange_01A10D00B + 810, // imageAtomicCompSwap_01V20D00D00D00D + 811, // imageAtomicExchange_01A10D00E + 812, // imageAtomicExchange_01A10D00D + 813, // imageAtomicXor_01b20D00D + 814, // texture_00n20B + 815, // ldexp_20C20D + 816, // clamp_00E00E00E + 818, // length_20B + 820, // ldexp_00B00D + 822, // imageAtomicExchange_01N10D00E + 823, // bitfieldInsert_00D00D00D00D + 825, // textureProjGrad_00Y30B20B20B + 827, // roundEven_30B + 829, // roundEven_30C + 830, // acosh_20B + 832, // atanh_10B + 834, // length_20C + 835, // clamp_10B10B10B + 837, // textureGatherOffset_00L20B10D00D + 839, // bitCount_00D + 841, // bitCount_00E + 843, // imageAtomicExchange_01N10D00B + 844, // floatBitsToInt_30B + 846, // max_20B00B + 848, // imageAtomicAdd_00z10D00D + 849, // texelFetchOffset_00Y20D00D20D + 851, // atomicExchange_00E00E + 853, // imageAtomicXor_01h00D00D + 854, // imageAtomicXor_01h00D00E + 855, // ldexp_30C30D + 856, // texture_00o00B + 857, // textureGatherOffsets_00X10B70D00D + 858, // lessThanEqual_20B20B + 860, // min_10B00B + 862, // textureQueryLod_00f10B + 863, // smoothstep_10C10C10C + 864, // textureGatherOffsets_00U20B70D + 865, // imageAtomicAnd_01L00D00D + 866, // imageAtomicAnd_01L00D00E + 867, // mix_30F30F30F + 868, // abs_20D + 870, // abs_20C + 871, // abs_20B + 873, // lessThanEqual_10B10B + 875, // imageAtomicOr_01f00D00E + 876, // imageAtomicOr_01f00D00D + 877, // imageAtomicOr_01a20D00D + 878, // mix_00B00B00B + 880, // mix_00B00B00F + 882, // textureGather_00s30B00D + 883, // textureProj_00I20B + 885, // imageAtomicExchange_01B20D00B + 886, // textureLodOffset_00p10B00B00D + 887, // gl_MaxVertexAtomicCounterBuffers + 889, // unpackDouble2x32_00C + 890, // acos_00B + 892, // textureGradOffset_00J20B20B20B20D + 894, // fma_00C00C00C + 895, // texture2DGradEXT_00I10B10B10B + 896, // imageAtomicCompSwap_01G20D00D00D + 897, // imageAtomicAnd_01I20D00D + 898, // texture2DProjGradEXT_00I30B10B10B + 899, // fma_30B30B30B + 900, // imageAtomicAdd_01L00D00D + 901, // texture_00i20B00B + 902, // gl_MaxComputeWorkGroupCount + 904, // clamp_20C00C00C + 905, // imageAtomicMax_01X10D00E + 906, // imageAtomicCompSwap_00y10D00E00E + 907, // mix_30E30E30F + 908, // imageAtomicMax_01b20D00E + 909, // imageAtomicMin_01G20D00D + 910, // imageAtomicMin_01G20D00E + 911, // textureGatherOffsets_00I10B70D + 912, // imageAtomicExchange_01S10D00D00D + 913, // atan_20B + 915, // imageAtomicCompSwap_01Z20D00E00E + 916, // interpolateAtSample_30B00D + 917, // dFdxCoarse_30B + 918, // texture_00M10B + 919, // min_10B10B + 921, // textureLodOffset_00h10B00B00D + 922, // EndStreamPrimitive_00D + 923, // pow_10B10B + 925, // texture_00Y20B + 927, // imageAtomicXor_01P10D00D + 928, // texture_00X10B00B + 930, // frexp_00B00D + 932, // texture2D_00I10B + 934, // imageLoad_01O10D + 935, // ceil_20C + 936, // ceil_20B + 938, // imageAtomicMin_01b20D00E + 939, // imageAtomicMin_01b20D00D + 940, // imageAtomicMax_01P10D00D + 941, // imageAtomicMax_01P10D00E + 942, // imageAtomicExchange_01P10D00B + 943, // textureProjOffset_00R20B10D + 945, // imageStore_01V20D00D30E + 946, // imageAtomicCompSwap_01T20D00D00E00E + 947, // subpassLoad_01m00D + 949, // textureOffset_00I10B10D + 951, // min_20B00B + 953, // reflect_00B00B + 955, // noise4_10B + 956, // sqrt_10C + 957, // sqrt_10B + 959, // imageAtomicXor_01Z20D00D + 960, // imageAtomicXor_01Z20D00E + 961, // clamp_20E20E20E + 963, // textureGradOffset_00g00B00B00B00D + 964, // textureGather_00q20B + 965, // noise3_00B + 966, // imageAtomicOr_01G20D00D + 967, // imageAtomicOr_01G20D00E + 968, // imageAtomicMin_01C20D00D + 969, // imageAtomicMin_01C20D00E + 970, // imageAtomicAnd_01F20D00E + 971, // textureProjLod_00d30B00B + 973, // imageStore_01a20D30D + 974, // imageLoad_01H20D + 976, // textureProjGradOffset_00I20B10B10B10D + 978, // interpolateAtSample_20B00D + 979, // reflect_10B10B + 981, // refract_10B10B00B + 983, // imageAtomicMax_01h00D00D + 984, // mix_20C20C20F + 985, // imageAtomicExchange_01X10D00D + 986, // imageAtomicExchange_01X10D00E + 987, // mix_20C20C20C + 988, // textureOffset_00v10B10D + 989, // imageAtomicMin_01P10D00D + 990, // sinh_30B + 992, // textureSize_00m00D + 993, // textureQueryLod_00e20B + 994, // asinh_20B + 996, // imageAtomicAdd_01C20D00D + 997, // imageAtomicCompSwap_01I20D00D00D + 998, // textureProj_00O20B + 1000, // imageAtomicCompSwap_01M00D00E00E + 1001, // frexp_10B10D + 1003, // inverse_50B + 1005, // dot_10B10B + 1007, // imageAtomicExchange_01T20D00D00D + 1008, // imageAtomicExchange_01T20D00D00E + 1009, // noise2_00B + 1010, // textureProjGradOffset_00o10B00B00B00D + 1011, // radians_20B + 1013, // atomicCompSwap_00E00E00E + 1015, // textureGrad_00I00B00B00B + 1016, // textureGrad_00Y20B20B20B + 1018, // gl_MaxVertexUniformVectors + 1020, // textureOffset_00o00B00D00B + 1021, // ftransform_ + 1022, // textureProj_00X20B + 1024, // textureProjOffset_00n30B10D + 1025, // gl_MaxGeometryUniformComponents + 1026, // greaterThanEqual_20E20E + 1028, // textureProj_00M20B + 1029, // texture3DProjLod_00J30B00B + 1031, // isinf_30C + 1032, // imageAtomicAdd_01S10D00D00D + 1033, // mix_10D10D10F + 1034, // textureProjGrad_00g10B00B00B + 1035, // log_20B + 1037, // imageAtomicMax_01D20D00E + 1038, // imageAtomicMax_01D20D00D + 1039, // textureOffset_00h10B00D00B + 1040, // modf_30B30B + 1042, // roundEven_20C + 1043, // roundEven_20B + 1045, // outerProduct_30B10B + 1047, // textureProj_00J30B + 1049, // imageAtomicOr_00y10D00D + 1050, // imageAtomicOr_00y10D00E + 1051, // imageAtomicOr_01F20D00E + 1052, // imageAtomicOr_01F20D00D + 1053, // textureLodOffset_00t00B00B00D + 1054, // floatBitsToInt_20B + 1056, // texelFetch_00U20D00D + 1058, // max_00D00D + 1060, // atomicMin_00E00E + 1062, // imageAtomicMin_01Q10D00D00D + 1063, // imageAtomicMin_01Q10D00D00E + 1064, // textureGradOffset_00v10B10B10B10D + 1065, // textureGrad_00n20B10B10B + 1066, // imageLoad_01S10D00D + 1067, // max_20E20E + 1069, // imageAtomicCompSwap_01F20D00D00D + 1070, // abs_10D + 1072, // abs_10B + 1074, // abs_10C + 1075, // gl_FragDepthEXT + 1076, // imageAtomicAdd_01V20D00D00D + 1077, // gl_ClipDistance + 1078, // modf_30C30C + 1079, // imageAtomicExchange_01g00D00E + 1080, // textureGrad_00i20B00B00B + 1081, // textureProj_00g10B + 1082, // equal_20B20B + 1084, // textureProjLodOffset_00X20B00B10D + 1086, // max_30C00C + 1087, // imageAtomicMax_01W10D00D + 1088, // textureGatherOffsets_00a20B70D00D + 1089, // texture_00U20B00B + 1091, // textureProj_00I30B + 1093, // mix_00E00E00F + 1094, // imageAtomicCompSwap_01h00D00D00D + 1095, // mix_00D00D00F + 1096, // fwidthFine_00B + 1097, // texture_00i20B + 1098, // textureGradOffset_00a20B10B10B10D + 1100, // smoothstep_00B00B20B + 1102, // textureLod_00s30B00B + 1103, // imageAtomicOr_01C20D00D + 1104, // imageAtomicOr_01C20D00E + 1105, // imageAtomicXor_01g00D00E + 1106, // notEqual_30B30B + 1108, // imageAtomicCompSwap_01W10D00D00D + 1109, // textureGatherOffset_00f20B00B10D + 1111, // imageLoad_01T20D00D + 1112, // imageSize_00y + 1114, // imageAtomicMin_01W10D00E + 1115, // imageSize_00z + 1117, // mod_10C10C + 1118, // imageAtomicXor_01g00D00D + 1119, // faceforward_00C00C00C + 1120, // textureGrad_00a20B10B10B + 1122, // imageAtomicXor_01R10D00D00D + 1123, // imageAtomicXor_01T20D00D00E + 1124, // dFdxCoarse_00B + 1125, // imageAtomicMin_01a20D00D + 1126, // texture_00J20B00B + 1128, // refract_20B20B00B + 1130, // ceil_30C + 1131, // gl_MaxGeometryOutputComponents + 1132, // noise1_30B + 1133, // log2_30B + 1135, // textureProjGrad_00d30B10B10B + 1137, // mod_20C20C + 1138, // fract_30C + 1139, // texelFetch_00t00D00D + 1140, // imageAtomicXor_01L00D00D + 1141, // max_30E30E + 1143, // gl_MaxFragmentAtomicCounterBuffers + 1145, // gl_in + 1146, // noise4_00B + 1147, // distance_10C10C + 1148, // textureProjLodOffset_00J30B00B20D + 1150, // imageAtomicMax_01H20D00E + 1151, // imageAtomicMax_01H20D00D + 1152, // imageStore_01h00D30E + 1153, // textureGatherOffsets_00d10B00B70D + 1154, // texelFetch_00c20D00D + 1156, // sqrt_00B + 1158, // sqrt_00C + 1159, // textureProjLod_00R30B00B + 1161, // noise3_10B + 1162, // texelFetch_00q10D + 1163, // imageAtomicAnd_01F20D00D + 1164, // textureLod_00m20B00B + 1165, // textureProjOffset_00m30B00D00B + 1166, // textureProjGrad_00v30B10B10B + 1167, // clamp_20D20D20D + 1169, // imageAtomicMin_01P10D00E + 1170, // imageAtomicAdd_01C20D00E + 1171, // clamp_00C00C00C + 1172, // imageAtomicCompSwap_01b20D00E00E + 1173, // max_10E00E + 1175, // textureGrad_00U20B10B10B + 1177, // imageAtomicCompSwap_01B20D00D00D + 1178, // imageLoad_00z10D + 1180, // clamp_30C00C00C + 1181, // sinh_20B + 1183, // matrixCompMult_E0BE0B + 1184, // textureProjOffset_00q20B10D + 1185, // gl_PerVertex + 1186, // textureGradOffset_00m20B00B00B00D + 1187, // textureQueryLevels_00p + 1188, // gl_WorkGroupSize + 1190, // asinh_30B + 1192, // cross_20C20C + 1193, // textureGather_00a20B + 1195, // textureProjGradOffset_00O20B10B10B10D + 1196, // pow_30B30B + 1198, // imageAtomicCompSwap_01G20D00E00E + 1199, // smoothstep_10B10B10B + 1201, // textureProj_00O30B + 1203, // imageAtomicAdd_01Q10D00D00E + 1204, // textureQueryLod_00R10B + 1205, // imageAtomicCompSwap_01T20D00D00D00D + 1206, // imageAtomicAdd_01R10D00D00D + 1207, // imageAtomicAdd_01R10D00D00E + 1208, // imageAtomicExchange_01E20D00D + 1209, // imageAtomicExchange_01E20D00E + 1210, // isnan_00B + 1212, // isnan_00C + 1213, // imulExtended_10D10D10D10D + 1215, // textureProjGrad_00o10B00B00B + 1216, // refract_10C10C00B + 1217, // min_00E00E + 1219, // texture2DProj_00I30B + 1221, // textureGradOffset_00I10B10B10B10D + 1223, // textureLodOffset_00J20B00B20D + 1225, // notEqual_20B20B + 1227, // atomicCompSwap_00D00D00D + 1229, // imageAtomicOr_01W10D00E + 1230, // imageAtomicOr_01W10D00D + 1231, // textureOffset_00i20B00D + 1232, // dFdyFine_00B + 1233, // textureLod_00a20B00B + 1235, // textureProj_00N30B + 1236, // refract_30C30C00B + 1237, // equal_30D30D + 1239, // packSnorm2x16_10B + 1241, // floatBitsToUint_30B + 1243, // imageLoad_00y10D + 1245, // textureOffset_00R10B10D + 1247, // textureProjGrad_00q20B10B10B + 1248, // textureProjGradOffset_00R20B10B10B10D + 1250, // ldexp_30B30D + 1252, // max_30B00B + 1254, // imageAtomicAdd_01Q10D00D00D + 1255, // atomicCounterOr_00G00E + 1256, // step_30B30B + 1258, // imageAtomicOr_01T20D00D00D + 1259, // imageAtomicOr_01T20D00D00E + 1260, // textureProj_00I30B00B + 1262, // imageAtomicExchange_01D20D00E + 1263, // textureOffset_00g00B00D00B + 1264, // imageAtomicExchange_01D20D00B + 1265, // imageAtomicMin_01g00D00E + 1266, // abs_00D + 1268, // abs_00C + 1269, // abs_00B + 1271, // textureLod_00R10B00B + 1273, // dFdxCoarse_10B + 1274, // texture1D_00g00B + 1275, // frexp_10C10D + 1276, // imageAtomicMax_01B20D00D + 1277, // imageAtomicAdd_01g00D00E + 1278, // texture2DLod_00I10B00B + 1280, // textureProjGradOffset_00X20B10B10B10D + 1282, // round_20C + 1283, // EndPrimitive_ + 1285, // step_00B30B + 1287, // round_20B + 1289, // equal_30E30E + 1291, // imageAtomicCompSwap_01R10D00D00E00E + 1292, // step_00C20C + 1293, // dot_00C00C + 1294, // max_30C30C + 1295, // atomicOr_00D00D + 1297, // texture2DProj_00M20B + 1298, // notEqual_10D10D + 1300, // textureSize_00V + 1303, // imageAtomicAnd_01h00D00D + 1304, // min_20C00C + 1305, // imageAtomicAdd_01G20D00E + 1306, // imageAtomicAdd_01G20D00D + 1307, // findLSB_30D + 1309, // findLSB_30E + 1311, // textureProj_00X20B00B + 1313, // shadow2D_00d20B + 1314, // imageAtomicAdd_01N10D00E + 1315, // imageAtomicAdd_01N10D00D + 1316, // textureGatherOffset_00U20B10D + 1318, // faceforward_10B10B10B + 1320, // imageAtomicAnd_01h00D00E + 1321, // min_10D00D + 1323, // imageAtomicOr_01B20D00E + 1324, // imageAtomicOr_01B20D00D + 1325, // EmitStreamVertex_00D + 1326, // imageAtomicCompSwap_01J20D00D00D + 1327, // all_20F + 1329, // imageSize_01J + 1331, // imageSize_01K + 1332, // imageSize_01H + 1334, // imageSize_01I + 1336, // packHalf2x16_10B + 1338, // textureProj_00I20B00B + 1340, // imageSize_01L + 1341, // imageSize_01M + 1342, // imageSize_01B + 1344, // imageSize_01C + 1346, // texelFetch_00r00D + 1347, // imageSize_01F + 1349, // imageSize_01G + 1351, // imageSize_01D + 1353, // imageSize_01E + 1355, // imageSize_01Z + 1356, // imageAtomicExchange_01L00D00B + 1357, // imageAtomicMax_01Z20D00E + 1358, // texelFetch_00X10D00D + 1360, // notEqual_30F30F + 1362, // imageSize_01R + 1363, // imageSize_01S + 1364, // imageSize_01P + 1365, // imageSize_01Q + 1366, // imageSize_01V + 1367, // textureQueryLod_00g00B + 1368, // imageSize_01T + 1369, // imageSize_01U + 1370, // imageSize_01h + 1371, // fract_20C + 1372, // fract_20B + 1374, // textureGatherOffset_00X10B10D + 1376, // imageSize_01c + 1377, // imageSize_01a + 1378, // imageSize_01f + 1379, // texture2DProjGradEXT_00I20B10B10B + 1380, // imageSize_01d + 1381, // textureLod_00S20B00B + 1383, // step_30C30C + 1384, // imageAtomicMin_01J20D00D + 1385, // gl_FragDepth + 1387, // textureGather_00x30B + 1388, // mix_30B30B30F + 1390, // mix_30B30B30B + 1392, // textureGather_00Z20B00D + 1394, // noise4_30B + 1395, // sqrt_30C + 1396, // sqrt_30B + 1398, // imageStore_01E20D30B + 1400, // exp_00B + 1402, // max_30D30D + 1404, // gl_MaxGeometryTextureImageUnits + 1405, // interpolateAtCentroid_10B + 1406, // texture_00q10B + 1407, // textureSize_00M00D + 1408, // textureSamples_00c + 1409, // angle_BaseInstance + 1410, // mix_10F10F10F + 1411, // textureGradOffset_00U20B10B10B10D + 1413, // gl_Position + 1416, // textureGradOffset_00O10B10B10B10D + 1417, // textureProj_00M30B + 1418, // textureGradOffset_00L20B10B10B10D + 1420, // imageAtomicExchange_01V20D00D00D + 1421, // imageAtomicExchange_01J20D00B + 1422, // imageAtomicExchange_01J20D00E + 1423, // imageAtomicExchange_01J20D00D + 1424, // textureQueryLod_00l20B + 1425, // imageAtomicOr_01M00D00E + 1426, // dot_20B20B + 1428, // textureProjGrad_00v20B10B10B + 1429, // textureProjLod_00S30B00B + 1431, // textureProjGrad_00R20B10B10B + 1433, // imageAtomicMax_00z10D00E + 1434, // imageAtomicMax_00z10D00D + 1435, // normalize_30C + 1436, // normalize_30B + 1438, // textureOffset_00O10B10D + 1439, // textureProjGrad_00I20B10B10B + 1441, // textureGather_00e20B + 1442, // imageAtomicMax_01V20D00D00E + 1443, // texture2D_00M10B + 1444, // imageAtomicAdd_01a20D00E + 1445, // fwidthFine_30B + 1446, // textureGather_00K20B00D + 1448, // textureCubeLodEXT_00K20B00B + 1449, // textureGather_00T20B00D + 1451, // textureProj_00N20B + 1452, // textureQueryLod_00I10B + 1453, // imageAtomicCompSwap_01A10D00E00E + 1454, // dFdyFine_10B + 1455, // modf_10C10C + 1456, // imageAtomicMax_01E20D00D + 1457, // imageAtomicMax_01E20D00E + 1458, // textureProjLodOffset_00X30B00B10D + 1460, // textureProjLod_00m30B00B + 1461, // textureProjOffset_00g30B00D00B + 1462, // texelFetchOffset_00U20D00D10D + 1464, // imageAtomicCompSwap_00z10D00E00E + 1465, // imageAtomicMin_01D20D00E + 1466, // textureProjGradOffset_00q30B10B10B10D + 1467, // textureGradOffset_00d20B10B10B10D + 1469, // fwidthCoarse_20B + 1470, // textureProjOffset_00d30B10D + 1472, // equal_20F20F + 1474, // Empty + 1474, // mix_20C20C00C + 1475, // usubBorrow_10E10E10E + 1477, // imageStore_01S10D00D30E + 1478, // equal_10B10B + 1480, // imageAtomicExchange_01Q10D00D00D + 1481, // imageAtomicExchange_01Q10D00D00E + 1482, // imageAtomicExchange_01Q10D00D00B + 1483, // textureLodOffset_00U20B00B10D + 1485, // isnan_10C + 1486, // isnan_10B + 1488, // imageAtomicMin_01H20D00D + 1489, // imageAtomicXor_01A10D00D + 1490, // imageAtomicXor_01A10D00E + 1491, // imageAtomicCompSwap_01C20D00D00D + 1492, // textureGrad_00R00B00B00B + 1493, // imageAtomicXor_01W10D00D + 1494, // imageAtomicXor_01W10D00E + 1495, // atomicMin_00D00D + 1497, // textureSize_00X00D + 1499, // greaterThan_10B10B + 1501, // mix_00C00C00C + 1502, // clamp_30D00D00D + 1504, // mix_20E20E20F + 1505, // floatBitsToInt_10B + 1507, // textureProjOffset_00R30B10D00B + 1509, // textureGather_00U20B00D + 1511, // floatBitsToInt_00B + 1513, // imageLoad_01a20D + 1514, // floatBitsToUint_00B + 1516, // min_30C30C + 1517, // textureSamples_00Q + 1518, // textureGradOffset_00i20B00B00B00D + 1519, // imageAtomicXor_00z10D00D + 1520, // texture2DRectProj_00O20B + 1521, // modf_20C20C + 1522, // tan_20B + 1524, // floor_00C + 1525, // floor_00B + 1527, // imageAtomicMax_01O10D00E + 1528, // imageAtomicMax_01O10D00D + 1529, // mod_30C30C + 1530, // gl_DrawID + 1531, // textureOffset_00t00B00D + 1532, // texture3DLod_00J20B00B + 1534, // texture_00R10B00B + 1536, // modf_00B00B + 1538, // notEqual_20D20D + 1540, // imageAtomicExchange_01R10D00D00E + 1541, // imageAtomicExchange_01R10D00D00D + 1542, // ldexp_10C10D + 1543, // imageAtomicXor_00y10D00E + 1544, // imageAtomicXor_00y10D00D + 1545, // determinant_A0B + 1546, // textureLodOffset_00i20B00B00D + 1547, // imageStore_01D20D30E + 1549, // shadow1DLod_00m20B00B + 1550, // imageAtomicOr_01I20D00E + 1551, // distance_00C00C + 1552, // isnan_30B + 1554, // textureProjOffset_00o30B00D + 1555, // lessThanEqual_30D30D + 1557, // textureProj_00M30B00B + 1558, // texture2DProj_00M30B + 1559, // atomicCounterMax_00G00E + 1560, // atomicCounterExchange_00G00E + 1561, // textureGrad_00I10B10B10B + 1563, // step_00B20B + 1565, // texture2DProjLod_00I20B00B + 1567, // step_00C30C + 1568, // yuv_2_rgb_20B00H + 1569, // texelFetch_00b10D00D + 1572, // textureProj_00J30B00B + 1574, // textureGather_00R10B + 1576, // imageAtomicCompSwap_01K00D00E00E + 1577, // imageAtomicOr_01V20D00D00D + 1578, // imageAtomicOr_01V20D00D00E + 1579, // imageAtomicExchange_01P10D00D + 1580, // imageLoad_01L00D + 1581, // min_10D10D + 1583, // all_30F + 1585, // imageAtomicExchange_01P10D00E + 1586, // imageAtomicMax_01a20D00D + 1587, // imageAtomicAnd_01S10D00D00E + 1588, // imageAtomicAnd_01S10D00D00D + 1589, // angle_BaseVertex + 1590, // bitfieldReverse_20D + 1592, // bitfieldReverse_20E + 1594, // imageAtomicExchange_01I20D00D + 1595, // imageAtomicExchange_01I20D00E + 1596, // imageAtomicExchange_01I20D00B + 1597, // gl_MaxGeometryInputComponents + 1598, // texture_00u20B + 1599, // textureGather_00v20B + 1600, // fract_10B + 1602, // fract_10C + 1603, // textureGatherOffset_00O10B10D00D + 1604, // textureQueryLod_00K20B + 1605, // textureLodOffset_00I10B00B10D + 1607, // imageAtomicCompSwap_01S10D00D00E00E + 1608, // noise4_20B + 1609, // textureOffset_00U20B10D + 1611, // min_30B00B + 1613, // imageAtomicMax_00y10D00D + 1614, // imageAtomicMax_00y10D00E + 1615, // atomicAnd_00D00D + 1617, // gl_FragColor + 1619, // exp_10B + 1621, // textureOffset_00n20B10D + 1622, // bitCount_30D + 1624, // unpackUnorm2x16_00E + 1626, // sqrt_20B + 1628, // sqrt_20C + 1629, // textureGrad_00L20B10B10B + 1631, // interpolateAtCentroid_00B + 1632, // textureSize_00o00D + 1633, // gl_MaxImageUnits + 1635, // textureProjGrad_00o30B00B00B + 1636, // packUnorm4x8_30B + 1638, // texelFetch_00P10D00D + 1641, // texture_00O10B + 1643, // imageAtomicMin_01M00D00D + 1644, // imageAtomicMin_01M00D00E + 1645, // texture_00e30B00B + 1647, // imageAtomicMin_01O10D00E + 1648, // imageAtomicMin_01O10D00D + 1649, // imageAtomicExchange_01B20D00E + 1650, // imageAtomicExchange_01B20D00D + 1651, // gl_FragCoord + 1653, // imageAtomicMax_01X10D00D + 1654, // textureGrad_00u10B00B00B + 1655, // fwidthFine_20B + 1656, // textureQueryLod_00o00B + 1657, // imageAtomicAnd_01E20D00E + 1658, // imageAtomicAnd_01E20D00D + 1659, // normalize_00B + 1661, // normalize_00C + 1662, // clamp_10C00C00C + 1663, // imageAtomicCompSwap_01f00D00E00E + 1664, // imageAtomicOr_01A10D00E + 1665, // imageAtomicOr_01A10D00D + 1666, // imageAtomicOr_01K00D00D + 1667, // imageAtomicOr_01K00D00E + 1668, // atomicMax_00D00D + 1670, // textureProjGrad_00m30B00B00B + 1671, // imageAtomicAnd_01R10D00D00E + 1672, // floatBitsToUint_10B + 1674, // textureLod_00J20B00B + 1676, // imageAtomicExchange_01D20D00D + 1677, // textureGrad_00O10B10B10B + 1678, // dFdyFine_20B + 1679, // textureSize_00I00D + 1681, // gl_MaxComputeWorkGroupSize + 1683, // texelFetchOffset_00R10D00D10D + 1685, // dFdxFine_10B + 1686, // imageAtomicAnd_01K00D00E + 1687, // imageAtomicAnd_01K00D00D + 1688, // textureLodOffset_00X10B00B10D + 1690, // texture_00T20B00B + 1692, // textureProj_00q20B + 1693, // imageAtomicExchange_01K00D00D + 1694, // imageAtomicCompSwap_00y10D00D00D + 1695, // log_30B + 1697, // notEqual_20F20F + 1699, // allInvocationsEqual_00F + 1700, // imageStore_01G20D30E + 1702, // dFdyCoarse_30B + 1703, // textureProjLod_00R20B00B + 1705, // notEqual_30D30D + 1707, // fwidthCoarse_30B + 1708, // textureProjOffset_00I20B10D + 1710, // imageStore_01X10D30D + 1711, // textureQueryLevels_00l + 1712, // textureQueryLevels_00m + 1713, // textureQueryLevels_00o + 1714, // textureQueryLevels_00h + 1715, // textureQueryLevels_00i + 1716, // textureQueryLevels_00k + 1717, // textureQueryLevels_00d + 1718, // textureQueryLevels_00e + 1719, // textureQueryLevels_00f + 1720, // textureQueryLevels_00g + 1721, // gl_MaxDrawBuffers + 1723, // textureQueryLevels_00a + 1724, // atomicCounterMin_00G00E + 1725, // textureGradOffset_00u10B00B00B00D + 1726, // textureQueryLevels_00x + 1727, // textureQueryLevels_00t + 1728, // textureQueryLevels_00u + 1729, // imulExtended_20D20D20D20D + 1731, // any_30F + 1733, // distance_30B30B + 1735, // textureQueryLevels_00s + 1736, // textureQueryLevels_00L + 1737, // textureQueryLevels_00I + 1738, // textureQueryLevels_00J + 1739, // textureQueryLevels_00K + 1740, // imageAtomicExchange_01L00D00D + 1741, // imageAtomicAnd_01W10D00D + 1742, // imageAtomicAnd_01W10D00E + 1743, // texture3D_00J20B00B + 1745, // texture1DLod_00g00B00B + 1746, // textureQueryLevels_00X + 1747, // textureQueryLevels_00Y + 1748, // textureQueryLevels_00Z + 1749, // dot_30B30B + 1751, // textureQueryLevels_00T + 1752, // textureQueryLevels_00U + 1753, // textureQueryLevels_00R + 1754, // textureQueryLevels_00S + 1755, // gl_MaxTextureImageUnits + 1757, // usubBorrow_20E20E20E + 1759, // textureProj_00t30B00B + 1760, // shadow1DProj_00m30B00B + 1761, // clamp_30B00B00B + 1763, // texture2DRectProj_00O30B + 1764, // imageAtomicMax_01B20D00E + 1765, // max_10D00D + 1767, // textureGradOffset_00n20B10B10B10D + 1768, // clamp_00D00D00D + 1770, // floor_30B + 1772, // floor_30C + 1773, // imageStore_01P10D30E + 1774, // textureProjGradOffset_00S30B20B20B20D + 1776, // reflect_30C30C + 1777, // gl_PointCoord + 1779, // imageAtomicOr_01D20D00E + 1780, // textureGatherOffset_00v10B10D + 1781, // imageAtomicOr_01D20D00D + 1782, // packDouble2x32_10E + 1783, // clamp_10B00B00B + 1785, // imageStore_01F20D30D + 1787, // texelFetchOffset_00S20D00D20D + 1789, // lessThan_10D10D + 1791, // textureSize_00g00D + 1792, // textureGatherOffset_00U20B10D00D + 1794, // textureGatherOffset_00q10B10D00D + 1795, // textureGather_00I10B00D + 1797, // texture1DProjLod_00g30B00B + 1798, // texelFetch_00V10D00D + 1801, // imageAtomicExchange_01h00D00E + 1802, // imageAtomicExchange_01h00D00D + 1803, // atan_30B30B + 1805, // imageAtomicExchange_01h00D00B + 1806, // textureGatherOffsets_00R10B70D + 1807, // imageAtomicMax_01a20D00E + 1808, // textureProjLod_00g30B00B + 1809, // max_00B00B + 1811, // imageAtomicOr_01J20D00E + 1812, // imageAtomicOr_01J20D00D + 1813, // imageAtomicMax_01F20D00E + 1814, // imageAtomicMax_01F20D00D + 1815, // exp2_20B + 1817, // smoothstep_30C30C30C + 1818, // imageAtomicExchange_00z10D00B + 1819, // imageAtomicExchange_00z10D00E + 1820, // imageAtomicExchange_00z10D00D + 1821, // textureGatherOffsets_00n10B00B70D + 1822, // textureProjLod_00t10B00B + 1823, // imageAtomicExchange_01K00D00E + 1824, // imageAtomicExchange_01K00D00B + 1825, // gl_MaxCombinedTextureImageUnits + 1827, // textureSize_00k00D + 1828, // reflect_20B20B + 1830, // imageAtomicXor_01V20D00D00E + 1831, // imageAtomicXor_01V20D00D00D + 1832, // equal_10F10F + 1834, // imageLoad_01f00D + 1835, // acos_30B + 1837, // dFdx_10B + 1840, // bitfieldReverse_30E + 1842, // bitfieldReverse_30D + 1844, // texture1DProj_00g30B + 1845, // fract_00C + 1846, // fract_00B + 1848, // min_30E00E + 1850, // gl_MinProgramTexelOffset + 1852, // interpolateAtOffset_20B10B + 1853, // gl_MaxGeometryTotalOutputComponents + 1854, // reflect_30B30B + 1856, // textureGatherOffsets_00I10B70D00D + 1857, // interpolateAtCentroid_30B + 1858, // textureGather_00s30B + 1859, // imageAtomicXor_01X10D00E + 1860, // imageAtomicXor_01X10D00D + 1861, // imageStore_01Z20D30B + 1862, // texture1D_00g00B00B + 1863, // pow_00B00B + 1865, // mod_00B00B + 1867, // faceforward_30C30C30C + 1868, // roundEven_10B + 1870, // roundEven_10C + 1871, // atanh_30B + 1873, // textureLod_00K20B00B + 1875, // bitCount_20D + 1877, // bitCount_20E + 1879, // texelFetch_00L20D00D + 1881, // dFdxFine_00B + 1882, // distance_20B20B + 1884, // textureGradOffset_00q10B10B10B10D + 1885, // uaddCarry_30E30E30E + 1887, // textureSize_00U00D + 1889, // textureProjOffset_00o10B00D00B + 1890, // gl_MaxCombinedImageUniforms + 1892, // atomicCounterXor_00G00E + 1893, // imageAtomicOr_01g00D00D + 1894, // imageAtomicOr_01g00D00E + 1895, // gl_GlobalInvocationID + 1897, // gl_VertexID + 1899, // imageAtomicMin_01L00D00E + 1900, // smoothstep_20C20C20C + 1901, // imageAtomicCompSwap_01U20D00D00D00D + 1902, // atomicOr_00E00E + 1904, // imageAtomicExchange_01T20D00D00B + 1905, // mix_10B10B10F + 1907, // reflect_10C10C + 1908, // mix_10B10B10B + 1910, // textureProj_00Y30B00B + 1912, // imageAtomicMax_01I20D00D + 1913, // imageAtomicMax_01I20D00E + 1914, // frexp_20B20D + 1916, // textureGatherOffset_00I10B10D00D + 1918, // notEqual_20E20E + 1920, // textureLodOffset_00d20B00B10D + 1922, // inverse_A0B + 1924, // textureProjGrad_00X20B10B10B + 1926, // imageLoad_01J20D + 1928, // textureSize_00Y00D + 1930, // atan_20B20B + 1932, // usubBorrow_00E00E00E + 1934, // imageAtomicXor_01M00D00E + 1935, // imageAtomicXor_01M00D00D + 1936, // dFdyFine_30B + 1937, // textureQueryLod_00s20B + 1938, // imageAtomicAnd_01N10D00D + 1939, // texture_00v10B + 1940, // subpassLoad_01n00D + 1942, // textureProjLodOffset_00g10B00B00D + 1943, // step_10C10C + 1944, // textureQueryLod_00x20B + 1945, // fma_10B10B10B + 1946, // smoothstep_00B00B10B + 1948, // imageAtomicCompSwap_01a20D00D00D + 1949, // imageSize_01N + 1950, // textureLod_00u10B00B + 1951, // textureProjGradOffset_00m30B00B00B00D + 1952, // fwidthCoarse_00B + 1953, // dFdyCoarse_20B + 1954, // textureProjGradOffset_00o30B00B00B00D + 1955, // textureProj_00g30B00B + 1956, // bitfieldExtract_00E00D00D + 1958, // imageStore_01I20D30D + 1960, // distance_30C30C + 1961, // any_20F + 1963, // textureGatherOffsets_00L20B70D + 1964, // textureLod_00g00B00B + 1965, // sin_10B + 1967, // textureSize_00N00D + 1968, // mod_20B20B + 1970, // imageAtomicOr_01h00D00E + 1971, // imageAtomicOr_01h00D00D + 1972, // textureGrad_00k30B20B20B + 1973, // textureProjOffset_00o10B00D + 1974, // imageAtomicMin_01A10D00E + 1975, // imageAtomicMin_01A10D00D + 1976, // textureGradOffset_00f30B10B10B10D + 1978, // max_20D20D + 1980, // max_10D10D + 1982, // imageAtomicCompSwap_01N10D00E00E + 1983, // textureGradOffset_00t00B00B00B00D + 1984, // refract_30B30B00B + 1986, // floor_20C + 1987, // floor_20B + 1989, // texelFetchOffset_00t00D00D00D + 1990, // imageAtomicOr_01a20D00E + 1991, // matrixCompMult_F0BF0B + 1993, // umulExtended_10E10E10E10E + 1995, // texture_00d20B00B + 1997, // imageAtomicAdd_01Z20D00D + 1998, // imageAtomicAdd_01Z20D00E + 1999, // umulExtended_30E30E30E30E + 2001, // textureGatherOffsets_00q10B70D00D + 2002, // textureGradOffset_00Y20B20B20B20D + 2004, // textureGatherOffset_00a20B10D + 2006, // textureGrad_00f30B10B10B + 2008, // atomicCounterSubtract_00G00E + 2009, // imageAtomicXor_01C20D00E + 2010, // modf_20B20B + 2012, // imageAtomicAnd_01Y10D00D + 2013, // imageAtomicAnd_01Y10D00E + 2014, // noise1_00B + 2015, // imageLoad_01M00D + 2016, // imageAtomicCompSwap_01L00D00E00E + 2017, // length_30C + 2018, // length_30B + 2020, // mod_30B30B + 2022, // mix_10C10C10F + 2023, // imageAtomicMin_00z10D00E + 2024, // imageAtomicMin_00z10D00D + 2025, // exp2_30B + 2027, // allInvocations_00F + 2028, // max_20C00C + 2029, // texture3DProj_00J30B00B + 2031, // imageLoad_01Q10D00D + 2032, // textureProjLod_00X30B00B + 2034, // textureProjGradOffset_00I30B10B10B10D + 2036, // cosh_30B + 2038, // textureProj_00q30B + 2039, // textureOffset_00S20B20D00B + 2041, // usubBorrow_30E30E30E + 2043, // textureProjOffset_00R20B10D00B + 2045, // imageAtomicXor_01f00D00D + 2046, // imageAtomicXor_01f00D00E + 2047, // textureOffset_00t00B00D00B + 2048, // textureOffset_00i20B00D00B + 2049, // texture3DProj_00J30B + 2051, // matrixCompMult_B0BB0B + 2052, // lessThan_30B30B + 2054, // cross_20B20B + 2056, // imageSize_01O + 2057, // textureGrad_00q10B10B10B + 2058, // clamp_20B00B00B + 2060, // dFdx_00B + 2063, // findLSB_00D + 2065, // textureProjLodOffset_00o30B00B00D + 2066, // textureProj_00R20B00B + 2068, // acos_20B + 2070, // imageSize_01A + 2072, // imageAtomicAnd_01B20D00D + 2073, // max_20B20B + 2075, // lessThan_20E20E + 2077, // textureProjOffset_00g10B00D00B + 2078, // equal_30F30F + 2080, // sign_00C + 2081, // cosh_00B + 2083, // bitfieldExtract_00D00D00D + 2085, // imageAtomicMin_01E20D00D + 2086, // imageAtomicMin_01E20D00E + 2087, // textureLod_00Z20B00B + 2089, // sign_00D + 2091, // textureOffset_00Y20B20D + 2093, // transpose_60B + 2095, // imageAtomicExchange_01L00D00E + 2096, // imageAtomicAdd_01O10D00D + 2097, // imageAtomicAdd_01O10D00E + 2098, // faceforward_00B00B00B + 2100, // gl_NumWorkGroups + 2102, // imageAtomicOr_01O10D00E + 2103, // imageAtomicOr_01O10D00D + 2104, // imageAtomicAdd_01b20D00D + 2105, // interpolateAtCentroid_20B + 2106, // textureProjLodOffset_00R30B00B10D + 2108, // textureGrad_00h10B00B00B + 2109, // imageAtomicExchange_01U20D00D00B + 2110, // texture1DProj_00g30B00B + 2111, // textureQueryLod_00h00B + 2112, // imageAtomicExchange_01U20D00D00E + 2113, // modf_00C00C + 2114, // textureProjLod_00t30B00B + 2115, // textureOffset_00o00B00D + 2116, // imageAtomicExchange_01U20D00D00D + 2117, // textureGather_00U20B + 2119, // imageStore_01H20D30B + 2121, // texelFetch_00Q20D00D + 2123, // roundEven_00C + 2124, // roundEven_00B + 2126, // texelFetchOffset_00O10D10D + 2127, // atanh_20B + 2129, // clamp_10E00E00E + 2131, // dFdxFine_30B + 2132, // imageAtomicAdd_01L00D00E + 2133, // textureQueryLod_00J20B + 2134, // textureProjOffset_00X30B10D + 2136, // gl_MaxFragmentUniformVectors + 2138, // texture2DProjLod_00I30B00B + 2140, // interpolateAtOffset_10B10B + 2141, // max_10C10C + 2142, // texelFetch_00g00D00D + 2143, // abs_30B + 2145, // bitfieldInsert_10E10E00D00D + 2147, // packSnorm4x8_30B + 2149, // mix_10B10B00B + 2151, // imageSize_01b + 2152, // clamp_30D30D30D + 2154, // textureQueryLod_00d10B + 2155, // mod_10C00C + 2156, // imageAtomicMax_01G20D00D + 2157, // imageAtomicMax_01G20D00E + 2158, // imageStore_01R10D00D30D + 2159, // determinant_F0B + 2160, // transpose_A0B + 2162, // pow_20B20B + 2164, // imageSize_01g + 2165, // imageAtomicExchange_01G20D00B + 2166, // imageSize_01e + 2167, // imageAtomicExchange_01G20D00D + 2168, // imageAtomicExchange_01G20D00E + 2169, // imageLoad_01Y10D + 2170, // imageAtomicMax_01g00D00D + 2171, // imageAtomicMax_01g00D00E + 2172, // textureProj_00v30B + 2173, // textureProjGrad_00O20B10B10B + 2174, // log2_20B + 2176, // dot_30C30C + 2177, // fwidthCoarse_10B + 2178, // textureProjOffset_00I20B10D00B + 2180, // textureGatherOffsets_00U20B70D00D + 2181, // notEqual_10F10F + 2183, // textureGatherOffsets_00O10B70D + 2184, // smoothstep_00B00B00B + 2186, // textureProjLodOffset_00d30B00B10D + 2188, // imageAtomicAnd_01P10D00E + 2189, // imageAtomicAnd_01P10D00D + 2190, // textureProjLodOffset_00I30B00B10D + 2192, // gl_MaxCombinedAtomicCounters + 2194, // bitfieldInsert_10D10D00D00D + 2196, // imageAtomicAdd_00y10D00E + 2197, // imageAtomicAdd_00y10D00D + 2198, // imageAtomicAnd_01Q10D00D00E + 2199, // imageAtomicAnd_01Q10D00D00D + 2200, // imageAtomicCompSwap_01L00D00D00D + 2201, // textureGather_00k30B + 2202, // texture_00J20B + 2204, // lessThanEqual_10D10D + 2206, // textureProjOffset_00o30B00D00B + 2207, // gl_MaxVaryingVectors + 2209, // textureSize_00d00D + 2211, // sin_00B + 2213, // imageLoad_01N10D + 2214, // uaddCarry_10E10E10E + 2216, // imageAtomicOr_01Z20D00E + 2217, // imageAtomicOr_01Z20D00D + 2218, // mix_10C10C00C + 2219, // atomicCounterIncrement_00G + 2221, // imageAtomicAdd_01J20D00D + 2222, // imageAtomicAdd_01J20D00E + 2223, // imageAtomicCompSwap_01S10D00D00D00D + 2224, // imageAtomicMax_01W10D00E + 2225, // textureProj_00o10B00B + 2226, // imageAtomicAdd_01U20D00D00D + 2227, // imageAtomicAdd_01U20D00D00E + 2228, // textureProjOffset_00m30B00D + 2229, // imageAtomicExchange_01Y10D00B + 2230, // equal_10E10E + 2232, // imageAtomicExchange_01Y10D00E + 2233, // imageAtomicExchange_01Y10D00D + 2234, // imageAtomicExchange_01O10D00B + 2235, // imageAtomicExchange_01O10D00E + 2236, // textureProjOffset_00J30B20D + 2238, // imageAtomicXor_01D20D00D + 2239, // imageAtomicXor_01D20D00E + 2240, // notEqual_10E10E + 2242, // min_10C10C + 2243, // textureProjGrad_00t10B00B00B + 2244, // textureGather_00q20B00D + 2245, // imageAtomicAnd_01B20D00E + 2246, // imageAtomicAdd_01S10D00D00E + 2247, // imageAtomicCompSwap_01O10D00D00D + 2248, // shadow1DProjLod_00m30B00B + 2249, // imageAtomicMax_01f00D00E + 2250, // imageAtomicMax_01f00D00D + 2251, // texture_00u20B00B + 2252, // textureLodOffset_00R10B00B10D + 2254, // trunc_10B + 2256, // trunc_10C + 2257, // gl_MaxComputeAtomicCounters + 2259, // texelFetch_00u10D00D + 2260, // dot_20C20C + 2261, // gl_DepthRangeParameters + 2263, // textureGather_00f20B + 2264, // textureGatherOffsets_00L20B70D00D + 2265, // noise1_10B + 2266, // textureProjGrad_00g30B00B00B + 2267, // shadow2DProj_00d30B + 2268, // textureProj_00d30B00B + 2270, // sign_10B + 2272, // max_00E00E + 2274, // texture_00a20B00B + 2276, // textureProj_00o10B + 2277, // refract_20C20C00B + 2278, // textureProj_00M20B00B + 2279, // imageLoad_01A10D + 2281, // textureProjOffset_00X30B10D00B + 2283, // exp2_00B + 2285, // imageAtomicExchange_01H20D00B + 2286, // texelFetchOffset_00u10D00D00D + 2287, // imageAtomicCompSwap_01H20D00E00E + 2288, // imageAtomicExchange_01H20D00E + 2289, // imageAtomicExchange_01H20D00D + 2290, // textureGatherOffset_00q10B10D + 2291, // textureGather_00a20B00D + 2293, // imageStore_01Q10D00D30B + 2294, // ldexp_00C00D + 2295, // textureSize_00s00D + 2296, // imageAtomicXor_01P10D00E + 2297, // imageAtomicOr_01I20D00D + 2298, // texture_00N10B00B + 2299, // gl_PrimitiveID + 2301, // imageAtomicOr_01X10D00D + 2302, // imageAtomicCompSwap_01Y10D00D00D + 2303, // imageAtomicOr_01X10D00E + 2304, // textureProjGrad_00I30B10B10B + 2306, // gl_Layer + 2308, // textureOffset_00d20B10D + 2310, // dFdx_30B + 2313, // imageAtomicMin_01V20D00D00D + 2314, // imageAtomicMin_01V20D00D00E + 2315, // gl_LastFragColor + 2316, // textureProjGradOffset_00t30B00B00B00D + 2317, // min_20E20E + 2319, // asin_20B + 2321, // imageAtomicCompSwap_01U20D00D00E00E + 2322, // texture_00l30B00B + 2323, // texture1DProjLod_00g10B00B + 2324, // fwidth_10B + 2327, // dFdy_00B + 2330, // shadow2DLod_00d20B00B + 2331, // texture1DProj_00g10B + 2332, // lessThan_30E30E + 2334, // imulExtended_30D30D30D30D + 2336, // transpose_70B + 2338, // imulExtended_00D00D00D00D + 2340, // textureGatherOffsets_00q10B70D + 2341, // imageAtomicAdd_01F20D00D + 2342, // imageAtomicAdd_01F20D00E + 2343, // texture_00S20B00B + 2345, // textureLod_00Y20B00B + 2347, // faceforward_10C10C10C + 2348, // textureQueryLod_00u00B + 2349, // min_20D00D + 2351, // imageAtomicCompSwap_01P10D00D00D + 2352, // uintBitsToFloat_00E + 2354, // dFdxFine_20B + 2355, // imageAtomicMin_01L00D00D + 2356, // imageAtomicExchange_01g00D00D + 2357, // bitfieldInsert_20D20D00D00D + 2359, // mix_30B30B00B + 2361, // textureQueryLod_00U10B + 2362, // imageAtomicAnd_01N10D00E + 2363, // tanh_00B + 2365, // imageStore_00y10D30B + 2367, // max_10C00C + 2368, // matrixCompMult_D0BD0B + 2369, // gl_MaxClipDistances + 2370, // textureGatherOffsets_00v10B70D00D + 2371, // gl_MaxComputeUniformComponents + 2373, // imageAtomicAnd_01X10D00E + 2374, // shadow2DProjLod_00d30B00B + 2375, // imageAtomicAnd_01X10D00D + 2376, // min_30B30B + 2378, // reflect_20C20C + 2379, // texelFetch_00h10D00D + 2380, // memoryBarrierAtomicCounter_ + 2382, // bitfieldInsert_00E00E00D00D + 2384, // imageAtomicMin_01Z20D00E + 2385, // imageAtomicMin_01Z20D00D + 2386, // imageAtomicAdd_01b20D00E + 2387, // imageAtomicMin_01a20D00E + 2388, // textureGrad_00d20B10B10B + 2390, // atan_10B + 2392, // imageAtomicMax_01T20D00D00D + 2393, // imageAtomicMax_01T20D00D00E + 2394, // imageAtomicCompSwap_01g00D00D00D + 2395, // clamp_30C30C30C + 2396, // textureProj_00v20B + 2397, // step_00B10B + 2399, // textureProjLod_00I20B00B + 2401, // rgb_2_yuv_20B00H + 2402, // imageStore_01B20D30B + 2404, // imageLoad_01P10D + 2405, // texture_00T20B + 2407, // log2_10B + 2409, // imageAtomicAnd_01D20D00D + 2410, // imageAtomicAnd_01D20D00E + 2411, // findLSB_20E + 2413, // findLSB_20D + 2415, // imageAtomicMin_01f00D00E + 2416, // imageAtomicMin_01f00D00D + 2417, // noise2_30B + 2418, // imageAtomicOr_01U20D00D00E + 2419, // greaterThanEqual_10B10B + 2421, // imageAtomicXor_01K00D00D + 2422, // clamp_10D10D10D + 2424, // texelFetch_00M10D00D + 2425, // textureQueryLod_00Y20B + 2426, // transpose_F0B + 2428, // textureOffset_00Y20B20D00B + 2430, // textureGradOffset_00S20B20B20B20D + 2432, // imageAtomicOr_01U20D00D00D + 2433, // clamp_30E30E30E + 2435, // textureSize_00R00D + 2437, // imageAtomicAdd_01f00D00D + 2438, // acosh_10B + 2440, // imageAtomicAdd_01f00D00E + 2441, // imageLoad_01b20D + 2442, // textureOffset_00L20B10D00B + 2444, // mod_20B00B + 2446, // imageLoad_01U20D00D + 2447, // textureProjLod_00J30B00B + 2449, // subpassLoad_01i + 2451, // subpassLoad_01k + 2453, // transpose_90B + 2455, // mix_30C30C00C + 2456, // atomicAnd_00E00E + 2458, // max_20D00D + 2460, // texelFetchOffset_00I10D00D10D + 2462, // textureQueryLod_00L10B + 2463, // atomicCounter_00G + 2465, // textureGrad_00m20B00B00B + 2466, // noise3_20B + 2467, // bitfieldInsert_30D30D00D00D + 2469, // min_10C00C + 2470, // greaterThan_10D10D + 2472, // bitfieldExtract_10E00D00D + 2474, // textureGradOffset_00h10B00B00B00D + 2475, // imageAtomicMax_01V20D00D00D + 2476, // texture2D_00I10B00B + 2478, // greaterThan_20D20D + 2480, // noise1_20B + 2481, // textureProjLodOffset_00t10B00B00D + 2482, // textureProjOffset_00O20B10D + 2483, // trunc_00B + 2485, // length_10C + 2486, // length_10B + 2488, // imageLoad_01R10D00D + 2489, // imageAtomicAdd_01H20D00D + 2490, // imageAtomicAdd_01H20D00E + 2491, // subpassLoad_01j + 2493, // dot_00B00B + 2495, // tan_30B + 2497, // textureLod_00T20B00B + 2499, // textureProjGrad_00R30B10B10B + 2501, // exp2_10B + 2503, // textureProjOffset_00X20B10D00B + 2505, // textureProjGradOffset_00X30B10B10B10D + 2507, // matrixCompMult_A0BA0B + 2509, // textureGatherOffsets_00v10B70D + 2510, // textureGrad_00S20B20B20B + 2512, // round_30B + 2514, // round_30C + 2515, // anyInvocation_00F + 2516, // textureGrad_00x30B20B20B + 2517, // imageAtomicCompSwap_01D20D00E00E + 2518, // textureProjLod_00o30B00B + 2519, // smoothstep_00C00C10C + 2520, // interpolateAtSample_00B00D + 2521, // dFdx_20B + 2524, // texture_00L20B + 2526, // barrier_ + 2528, // imageAtomicAdd_01a20D00D + 2529, // textureGather_00k30B00D + 2530, // findMSB_20D + 2532, // textureGatherOffset_00L20B10D + 2534, // imageAtomicMin_01S10D00D00D + 2535, // imageAtomicMin_01S10D00D00E + 2536, // textureProjOffset_00S30B20D00B + 2538, // imageAtomicAdd_01D20D00D + 2539, // normalize_10C + 2540, // unpackSnorm4x8_00E + 2542, // imageLoad_01C20D + 2544, // imageAtomicMax_01C20D00D + 2545, // imageAtomicMax_01C20D00E + 2546, // textureGather_00l30B00B + 2547, // normalize_10B + 2549, // asin_30B + 2551, // isnan_20B + 2553, // isnan_20C + 2554, // fwidth_00B + 2557, // dFdy_10B + 2560, // imageAtomicAdd_01P10D00E + 2561, // imageAtomicAdd_01P10D00D + 2562, // max_30E00E + 2564, // textureLod_00d20B00B + 2566, // textureOffset_00q10B10D + 2567, // gl_LastFragData + 2569, // mod_10B00B + 2571, // texture_00g00B00B + 2572, // uintBitsToFloat_10E + 2574, // textureProjOffset_00t30B00D + 2575, // matrixCompMult_70B70B + 2576, // imageAtomicAdd_01I20D00D + 2577, // imageAtomicMax_01M00D00D + 2578, // imageAtomicMax_01M00D00E + 2579, // textureLod_00k30B00B + 2580, // imageAtomicAdd_01E20D00D + 2581, // textureLodOffset_00Y20B00B20D + 2583, // refract_00C00C00B + 2584, // log2_00B + 2586, // tanh_10B + 2588, // imageAtomicMin_01I20D00E + 2589, // textureLod_00h10B00B + 2590, // imageStore_01b20D30E + 2591, // textureGather_00O20B00D + 2592, // gl_LocalInvocationID + 2594, // clamp_00B00B00B + 2596, // textureGather_00d10B + 2597, // gl_MaxGeometryAtomicCounterBuffers + 2598, // textureOffset_00p10B00D00B + 2599, // imageAtomicExchange_01f00D00B + 2600, // clamp_10C10C10C + 2601, // outerProduct_20B10B + 2603, // textureProjOffset_00t10B00D + 2604, // isinf_20C + 2605, // textureGrad_00e30B20B20B + 2607, // textureSize_00J00D + 2609, // textureQueryLod_00Z20B + 2610, // dot_10C10C + 2611, // textureProjGrad_00n30B10B10B + 2612, // imageAtomicMin_01U20D00D00E + 2613, // imageAtomicMin_01U20D00D00D + 2614, // texture2DProjLodEXT_00I30B00B + 2615, // imageAtomicMax_01N10D00D + 2616, // imageAtomicMax_01N10D00E + 2617, // imageAtomicAnd_01b20D00D + 2618, // step_00B00B + 2620, // texture2DLodEXT_00I10B00B + 2621, // texture_00K20B00B + 2623, // textureProjGradOffset_00n30B10B10B10D + 2624, // textureGrad_00J20B20B20B + 2626, // imageAtomicCompSwap_01V20D00D00E00E + 2627, // textureOffset_00U20B10D00B + 2629, // intBitsToFloat_10D + 2631, // min_20C20C + 2632, // findLSB_10D + 2634, // textureProjLodOffset_00Y30B00B20D + 2636, // imageAtomicMax_01h00D00E + 2637, // texture3D_00J20B + 2639, // gl_SecondaryFragDataEXT + 2640, // imageAtomicAdd_01X10D00E + 2641, // faceforward_20C20C20C + 2642, // imageAtomicAnd_01O10D00E + 2643, // imageAtomicAdd_01X10D00D + 2644, // textureGather_00n10B00B + 2645, // textureGather_00X10B00D + 2647, // imageAtomicMax_01L00D00E + 2648, // imageAtomicMax_01L00D00D + 2649, // imageAtomicXor_01G20D00E + 2650, // imageAtomicXor_01G20D00D + 2651, // textureOffset_00a20B10D + 2653, // imageAtomicExchange_01X10D00B + 2654, // min_30E30E + 2656, // texture2DProj_00I30B00B + 2658, // textureQueryLod_00X10B + 2659, // imageAtomicAnd_01I20D00E + 2660, // textureCubeGradEXT_00K20B20B20B + 2661, // min_00B00B + 2663, // textureGradOffset_00o00B00B00B00D + 2664, // mix_30C30C30F + 2665, // mix_30C30C30C + 2666, // gl_WorkGroupID + 2668, // degrees_00B + 2670, // imageAtomicMax_01J20D00E + 2671, // imageAtomicMax_01J20D00D + 2672, // imageAtomicMin_01D20D00D + 2673, // atomicExchange_00D00D + 2675, // textureOffset_00m20B00D00B + 2676, // gl_MaxGeometryAtomicCounters + 2677, // textureOffset_00f30B10D + 2678, // imageAtomicExchange_01a20D00D + 2679, // imageAtomicExchange_01a20D00E + 2680, // imageAtomicExchange_01a20D00B + 2681, // matrixCompMult_60B60B + 2682, // imageAtomicCompSwap_00z10D00D00D + 2683, // textureProj_00t30B + 2684, // textureProjGradOffset_00t10B00B00B00D + 2685, // unpackSnorm2x16_00E + 2687, // lessThan_30D30D + 2689, // atan_00B00B + 2691, // textureQueryLod_00S20B + 2692, // notEqual_10B10B + 2694, // imageLoad_01G20D + 2696, // trunc_30B + 2698, // trunc_30C + 2699, // length_00B + 2701, // length_00C + 2702, // imageAtomicAnd_01H20D00D + 2703, // imageAtomicAnd_01H20D00E + 2704, // textureProj_00X30B00B + 2706, // imageAtomicExchange_01O10D00D + 2707, // imageAtomicCompSwap_01C20D00E00E + 2708, // tan_00B + 2710, // min_20E00E + 2712, // textureLod_00x30B00B + 2713, // textureSize_00j + 2714, // textureSize_00n + 2715, // imageAtomicXor_01F20D00D + 2716, // textureSize_00c + 2718, // textureSize_00b + 2721, // min_20B20B + 2723, // textureSize_00q + 2724, // textureSize_00r + 2725, // textureSize_00w + 2726, // textureSize_00v + 2727, // bitfieldInsert_20E20E00D00D + 2729, // gl_MaxProgramTexelOffset + 2731, // textureSize_00O + 2732, // imageAtomicAnd_01a20D00E + 2733, // imageAtomicMin_01g00D00D + 2734, // trunc_00C + 2735, // imageAtomicAnd_01a20D00D + 2736, // textureSize_00Q + 2738, // textureSize_00P + 2741, // imageAtomicAdd_01M00D00E + 2742, // imageAtomicAdd_01M00D00D + 2743, // textureSize_00W + 2745, // textureProjLod_00X20B00B + 2747, // smoothstep_00C00C00C + 2748, // atomicCounterAnd_00G00E + 2749, // faceforward_30B30B30B + 2751, // distance_20C20C + 2752, // atomicCounterAdd_00G00E + 2753, // imageStore_01O10D30D + 2754, // texture_00X10B + 2756, // ceil_00C + 2757, // ceil_00B + 2759, // distance_00B00B + 2761, // texelFetch_00O10D + 2762, // imageAtomicMin_01N10D00D + 2763, // imageAtomicMin_01N10D00E + 2764, // imageAtomicExchange_01C20D00D + 2765, // imageAtomicExchange_01C20D00E + 2766, // textureGrad_00s30B20B20B + 2767, // textureGather_00I10B + 2769, // imageAtomicExchange_01C20D00B + 2770, // min_30D30D + 2772, // findMSB_30E + 2774, // findMSB_30D + 2776, // textureGradOffset_00R10B10B10B10D + 2778, // fwidth_30B + 2781, // textureGrad_00K20B20B20B + 2783, // texelFetch_00S20D00D + 2785, // max_10B00B + 2787, // textureProjGradOffset_00R30B10B10B10D + 2789, // texelFetchOffset_00L20D00D10D + 2791, // isnan_30C + 2792, // transpose_50B + 2794, // greaterThanEqual_20D20D + 2796, // asinh_00B + 2798, // gl_PrimitiveIDIn + 2799, // textureGather_00Z20B + 2801, // textureGrad_00p10B00B00B + 2802, // textureProjOffset_00v30B10D + 2803, // greaterThan_20B20B + 2805, // min_20D20D + 2807, // texelFetchOffset_00g00D00D00D + 2808, // imageAtomicCompSwap_01g00D00E00E + 2809, // imageAtomicCompSwap_01Q10D00D00E00E + 2810, // imageAtomicXor_01O10D00D + 2811, // imageAtomicXor_01O10D00E + 2812, // tanh_20B + 2814, // textureProj_00m30B00B + 2815, // sin_20B + 2817, // smoothstep_00C00C30C + 2818, // textureSize_00l00D + 2819, // textureLod_00o00B00B + 2820, // imageAtomicMin_01K00D00D + 2821, // imageAtomicMin_01K00D00E + 2822, // textureOffset_00I10B10D00B + 2824, // imageAtomicAnd_00z10D00D + 2825, // imageAtomicAnd_00z10D00E + 2826, // gl_MaxAtomicCounterBufferSize + 2828, // textureOffset_00J20B20D00B + 2830, // lessThanEqual_20E20E + 2832, // gl_BaseVertex + 2833, // textureOffset_00g00B00D + 2834, // textureProj_00g30B + 2835, // imageLoad_01Z20D + 2836, // bitfieldInsert_30E30E00D00D + 2838, // bitfieldExtract_20E00D00D + 2840, // uintBitsToFloat_20E + 2842, // unpackUnorm4x8_00E + 2844, // mod_10B10B + 2846, // gl_LocalInvocationIndex + 2848, // imageAtomicAdd_01W10D00D + 2849, // imageAtomicAdd_01W10D00E + 2850, // gl_MaxVertexImageUniforms + 2852, // equal_20D20D + 2854, // gl_MaxCombinedAtomicCounterBuffers + 2856, // mix_10E10E10F + 2857, // textureGather_00R10B00D + 2859, // textureSize_00Z00D + 2861, // bitfieldExtract_30D00D00D + 2863, // imageAtomicXor_01J20D00D + 2864, // imageAtomicXor_01J20D00E + 2865, // imageStore_01T20D00D30B + 2866, // intBitsToFloat_00D + 2868, // textureLodOffset_00m20B00B00D + 2869, // findLSB_00E + 2871, // texelFetch_00p10D00D + 2872, // textureGather_00d10B00B + 2874, // shadow2DProj_00d30B00B + 2875, // inversesqrt_10B + 2877, // inversesqrt_10C + 2878, // abs_30D + 2880, // transpose_D0B + 2882, // abs_30C + 2883, // textureProjGrad_00O30B10B10B + 2884, // imageAtomicMax_01Z20D00D + 2885, // Empty + 2885, // imageLoad_01E20D + 2887, // textureProj_00N20B00B + 2888, // gl_FragData + 2890, // dFdxCoarse_20B + 2891, // clamp_20E00E00E + 2893, // textureProj_00d30B + 2895, // gl_MaxVertexOutputVectors + 2897, // shadow1D_00m20B + 2898, // textureOffset_00u10B00D + 2899, // cosh_10B + 2901, // sign_10C + 2902, // imageAtomicAnd_01G20D00E + 2903, // imageAtomicAnd_01G20D00D + 2904, // sign_10D + 2906, // umulExtended_00E00E00E00E + 2908, // gl_MaxVertexAttribs + 2910, // Empty + 2910, // texture_00a20B + 2912, // imageAtomicAdd_01T20D00D00E + 2913, // imageAtomicAdd_01T20D00D00D + 2914, // imageAtomicExchange_01g00D00B + 2915, // ldexp_10B10D + 2917, // textureProjOffset_00g30B00D + 2918, // texture_00Z20B + 2920, // degrees_10B + 2922, // texture_00K20B + 2924, // sinh_10B + 2926, // texture_00m20B + 2927, // imageAtomicXor_01C20D00D + 2928, // not_30F + 2930, // textureProjLodOffset_00I20B00B10D + 2932, // textureGather_00K20B + 2934, // textureGatherOffset_00R10B10D + 2936, // memoryBarrierShared_ + 2938, // clamp_20B20B20B + 2940, // texelFetch_00W20D00D + 2942, // textureProjLod_00g10B00B + 2943, // trunc_20C + 2944, // trunc_20B + 2946, // textureProjOffset_00I30B10D00B + 2948, // max_00C00C + 2949, // tan_10B + 2951, // texture_00g00B + 2952, // textureLodOffset_00L20B00B10D + 2954, // textureLodOffset_00u10B00B00D + 2955, // imageAtomicAnd_00y10D00E + 2956, // imageAtomicAnd_00y10D00D + 2957, // isinf_20B + 2959, // dFdyCoarse_10B + 2960, // textureGatherOffset_00X10B10D00D + 2962, // min_10E10E + 2964, // memoryBarrierImage_ + 2966, // round_10B + 2968, // round_10C + 2969, // textureProjLodOffset_00m30B00B00D + 2970, // textureProjGradOffset_00g10B00B00B00D + 2971, // textureProj_00R30B + 2973, // shadow1DProj_00m30B + 2974, // texture_00f30B00B + 2975, // fma_00B00B00B + 2976, // imageAtomicOr_01b20D00E + 2977, // imageAtomicOr_01b20D00D + 2978, // textureGatherOffset_00v10B10D00D + 2979, // atomicMax_00E00E + 2981, // imageAtomicMin_01B20D00E + 2982, // imageAtomicMin_01B20D00D + 2983, // textureQueryLod_00t00B + 2984, // textureProjOffset_00R30B10D + 2986, // textureProj_00X30B + 2988, // findMSB_00D + 2990, // findMSB_00E + 2992, // mix_20B20B20B + 2994, // imageAtomicCompSwap_01X10D00D00D + 2995, // frexp_30C30D + 2996, // mix_10C10C10C + 2997, // min_30D00D + 2999, // texture_00M10B00B + 3000, // fwidth_20B + 3003, // imageAtomicOr_01S10D00D00D + 3004, // imageAtomicOr_01S10D00D00E + 3005, // mod_30C00C + 3006, // imageAtomicAdd_01A10D00D + 3007, // imageAtomicAdd_01A10D00E + 3008, // texture_00o00B00B + 3009, // imageAtomicOr_01H20D00E + 3010, // imageAtomicOr_01H20D00D + 3011, // cos_20B + 3013, // textureGather_00T20B + 3015, // textureProjGradOffset_00J30B20B20B20D + 3017, // asinh_10B + 3019, // texelFetchOffset_00v10D10D + 3020, // imageAtomicXor_01E20D00E + 3021, // imageAtomicXor_01E20D00D }; using Ext = TExtension; @@ -30235,7 +30241,7 @@ constexpr UnmangledEntry unmangled[] = { {"abs", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL}, {"allInvocations", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL}, {"max", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL}, - {"subpassLoad", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL}, + {"subpassLoad", Ext::UNDEFINED, Ext::UNDEFINED, 310, 460, Shader::ALL}, {"atomicCounterAnd", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL}, {"unpackSnorm2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 420, Shader::ALL}, {"log2", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL}, diff --git a/src/compiler/translator/SymbolTable_autogen.h b/src/compiler/translator/SymbolTable_autogen.h index 55edff0518..d744bce975 100644 --- a/src/compiler/translator/SymbolTable_autogen.h +++ b/src/compiler/translator/SymbolTable_autogen.h @@ -2,7 +2,7 @@ // Generated by gen_builtin_symbols.py using data from builtin_variables.json and // builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // diff --git a/src/compiler/translator/TranslatorVulkan.cpp b/src/compiler/translator/TranslatorVulkan.cpp index d717c923d3..bdf32cf794 100644 --- a/src/compiler/translator/TranslatorVulkan.cpp +++ b/src/compiler/translator/TranslatorVulkan.cpp @@ -19,6 +19,7 @@ #include "compiler/translator/StaticType.h" #include "compiler/translator/tree_ops/NameEmbeddedUniformStructs.h" #include "compiler/translator/tree_ops/NameNamelessUniformBuffers.h" +#include "compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.h" #include "compiler/translator/tree_ops/RewriteAtomicCounters.h" #include "compiler/translator/tree_ops/RewriteCubeMapSamplersAs2DArray.h" #include "compiler/translator/tree_ops/RewriteDfdy.h" @@ -815,8 +816,9 @@ bool TranslatorVulkan::translateImpl(TIntermBlock *root, // if it's core profile shaders and they are used. if (getShaderType() == GL_FRAGMENT_SHADER) { - bool usesPointCoord = false; - bool usesFragCoord = false; + bool usesPointCoord = false; + bool usesFragCoord = false; + bool usesLastFragData = false; // Search for the gl_PointCoord usage, if its used, we need to flip the y coordinate. for (const ShaderVariable &inputVarying : mInputVaryings) @@ -837,6 +839,12 @@ bool TranslatorVulkan::translateImpl(TIntermBlock *root, usesFragCoord = true; break; } + + if (inputVarying.name == "gl_LastFragData") + { + usesLastFragData = true; + break; + } } if ((compileOptions & SH_ADD_BRESENHAM_LINE_RASTER_EMULATION) != 0) @@ -898,6 +906,16 @@ bool TranslatorVulkan::translateImpl(TIntermBlock *root, } } + if (usesLastFragData && !ReplaceLastFragData(this, root, &getSymbolTable(), &mUniforms)) + { + return false; + } + + if (!ReplaceInOutVariables(this, root, &getSymbolTable(), &mUniforms)) + { + return false; + } + { TIntermBinary *viewportYScale = CreateDriverUniformRef(driverUniforms, kViewportYScale); if (!RewriteDfdy(this, root, getSymbolTable(), getShaderVersion(), viewportYScale)) diff --git a/src/compiler/translator/Types.cpp b/src/compiler/translator/Types.cpp index a6d7ba9eb0..c01d532154 100644 --- a/src/compiler/translator/Types.cpp +++ b/src/compiler/translator/Types.cpp @@ -114,6 +114,18 @@ const char *getBasicString(TBasicType t) return "uimageCube"; case EbtAtomicCounter: return "atomic_uint"; + case EbtSubpassInput: + return "subpassInput"; + case EbtISubpassInput: + return "isubpassInput"; + case EbtUSubpassInput: + return "usubpassInput"; + case EbtSubpassInputMS: + return "subpassInputMS"; + case EbtISubpassInputMS: + return "isubpassInputMS"; + case EbtUSubpassInputMS: + return "usubpassInputMS"; default: UNREACHABLE(); return "unknown type"; diff --git a/src/compiler/translator/builtin_function_declarations.txt b/src/compiler/translator/builtin_function_declarations.txt index e08c95972b..ada2fad91f 100644 --- a/src/compiler/translator/builtin_function_declarations.txt +++ b/src/compiler/translator/builtin_function_declarations.txt @@ -1068,7 +1068,7 @@ GROUP BEGIN GLSLGS {"shader_type": "GEOMETRY"} GROUP END GLSLGS GROUP BEGIN SubpassInput - DEFAULT METADATA {"glsl_level": "GLSL4_6_BUILTINS", "op": "CallBuiltInFunction", "hasSideEffects": true} + DEFAULT METADATA {"essl_level": "ESSL3_1_BUILTINS", "glsl_level": "GLSL4_6_BUILTINS", "op": "CallBuiltInFunction", "hasSideEffects": true} gvec4 subpassLoad(gsubpassInput); gvec4 subpassLoad(gsubpassInputMS, int); GROUP END SubpassInput diff --git a/src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.cpp b/src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.cpp new file mode 100644 index 0000000000..43a08221fb --- /dev/null +++ b/src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.cpp @@ -0,0 +1,756 @@ +// +// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// ReplaceForShaderFramebufferFetch.h: Find any references to gl_LastFragData, and replace it with +// ANGLELastFragData. +// + +#include "compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.h" + +#include "common/bitset_utils.h" +#include "compiler/translator/ImmutableStringBuilder.h" +#include "compiler/translator/SymbolTable.h" +#include "compiler/translator/tree_util/BuiltIn.h" +#include "compiler/translator/tree_util/IntermNode_util.h" +#include "compiler/translator/tree_util/IntermTraverse.h" +#include "compiler/translator/tree_util/RunAtTheBeginningOfShader.h" +#include "compiler/translator/util.h" + +namespace sh +{ +namespace +{ + +using InputAttachmentIdxSet = angle::BitSet<32>; + +constexpr unsigned int kInputAttachmentZero = 0; +constexpr unsigned int kArraySizeZero = 0; + +class InputAttachmentReferenceTraverser : public TIntermTraverser +{ + public: + InputAttachmentReferenceTraverser(std::map *declaredSymOut, + unsigned int *maxInputAttachmentIndex, + InputAttachmentIdxSet *constIndicesOut, + bool *usedNonConstIndex) + : TIntermTraverser(true, false, false), + mDeclaredSym(declaredSymOut), + mMaxInputAttachmentIndex(maxInputAttachmentIndex), + mConstInputAttachmentIndices(constIndicesOut), + mUsedNonConstIndex(usedNonConstIndex) + { + mDeclaredSym->clear(); + *mMaxInputAttachmentIndex = 0; + mConstInputAttachmentIndices->reset(); + *mUsedNonConstIndex = false; + } + + bool visitDeclaration(Visit visit, TIntermDeclaration *node) override; + bool visitBinary(Visit visit, TIntermBinary *node) override; + + private: + void setInputAttachmentIndex(unsigned int index); + + std::map *mDeclaredSym; + unsigned int *mMaxInputAttachmentIndex; + InputAttachmentIdxSet *mConstInputAttachmentIndices; + bool *mUsedNonConstIndex; +}; + +class ReplaceVariableTraverser : public TIntermTraverser +{ + public: + ReplaceVariableTraverser( + const std::map &replacementMap) + : TIntermTraverser(true, false, false), mReplacementMap(replacementMap) + {} + + ReplaceVariableTraverser(const TVariable *toBeReplaced, const TIntermTyped *replacement) + : TIntermTraverser(true, false, false), mReplacementMap({{toBeReplaced, replacement}}) + {} + + bool visitDeclaration(Visit visit, TIntermDeclaration *node) override; + void visitSymbol(TIntermSymbol *node) override; + + private: + const std::map mReplacementMap; +}; + +void InputAttachmentReferenceTraverser::setInputAttachmentIndex(unsigned int inputAttachmentIdx) +{ + ASSERT(inputAttachmentIdx < mConstInputAttachmentIndices->size()); + mConstInputAttachmentIndices->set(inputAttachmentIdx); + *mMaxInputAttachmentIndex = std::max(*mMaxInputAttachmentIndex, inputAttachmentIdx); +} + +bool InputAttachmentReferenceTraverser::visitDeclaration(Visit visit, TIntermDeclaration *node) +{ + const TIntermSequence &sequence = *node->getSequence(); + ASSERT(sequence.size() == 1); + + TIntermSymbol *symbol = sequence.front()->getAsSymbolNode(); + if (symbol == nullptr) + { + return true; + } + + if (symbol->getType().getQualifier() == EvqFragmentInOut) + { + unsigned int inputAttachmentIdx = symbol->getType().getLayoutQualifier().location; + + if (symbol->getType().isArray()) + { + for (unsigned int index = 0; index < symbol->getType().getOutermostArraySize(); index++) + { + unsigned int realInputAttachmentIdx = inputAttachmentIdx + index; + setInputAttachmentIndex(realInputAttachmentIdx); + } + } + else + { + setInputAttachmentIndex(inputAttachmentIdx); + } + + mDeclaredSym->emplace(inputAttachmentIdx, symbol); + } + + return true; +} + +bool InputAttachmentReferenceTraverser::visitBinary(Visit visit, TIntermBinary *node) +{ + TOperator op = node->getOp(); + if (op != EOpIndexDirect && op != EOpIndexIndirect) + { + return true; + } + + TIntermSymbol *left = node->getLeft()->getAsSymbolNode(); + if (!left) + { + return true; + } + else if (left->getName() != "gl_LastFragData") + { + return true; + } + + const TConstantUnion *constIdx = node->getRight()->getConstantValue(); + if (!constIdx) + { + // If the shader code uses gl_LastFragData with a non-const index, the input attachment + // variable should be created as the maximum number. So, the previous redeclared + // variable will be reset. + mDeclaredSym->clear(); + + *mUsedNonConstIndex = true; + mDeclaredSym->emplace(0, left); + return true; + } + else + { + unsigned int idx = 0; + switch (constIdx->getType()) + { + case EbtInt: + idx = constIdx->getIConst(); + break; + case EbtUInt: + idx = constIdx->getUConst(); + break; + case EbtFloat: + idx = static_cast(constIdx->getFConst()); + break; + case EbtBool: + idx = constIdx->getBConst() ? 1 : 0; + break; + default: + UNREACHABLE(); + break; + } + ASSERT(idx < mConstInputAttachmentIndices->size()); + mConstInputAttachmentIndices->set(idx); + + *mMaxInputAttachmentIndex = std::max(*mMaxInputAttachmentIndex, idx); + mDeclaredSym->emplace(idx, left); + } + + return true; +} + +bool ReplaceVariableTraverser::visitDeclaration(Visit visit, TIntermDeclaration *node) +{ + const TIntermSequence &sequence = *(node->getSequence()); + if (sequence.size() != 1) + { + return true; + } + + TIntermTyped *nodeType = sequence.front()->getAsTyped(); + TIntermSymbol *symbol = nodeType->getAsSymbolNode(); + if (symbol == nullptr) + { + return true; + } + + const TVariable *variable = &symbol->variable(); + if (mReplacementMap.find(variable) != mReplacementMap.end()) + { + TIntermSequence emptyReplacement; + mMultiReplacements.emplace_back(getParentNode()->getAsBlock(), node, + std::move(emptyReplacement)); + + return true; + } + + return true; +} + +void ReplaceVariableTraverser::visitSymbol(TIntermSymbol *node) +{ + const TVariable *variable = &node->variable(); + if (mReplacementMap.find(variable) != mReplacementMap.end()) + { + queueReplacement(mReplacementMap.at(variable)->deepCopy(), OriginalNode::IS_DROPPED); + } +} + +TBasicType GetBasicTypeForSubpassInput(TBasicType inputType) +{ + switch (inputType) + { + case EbtFloat: + return EbtSubpassInput; + case EbtInt: + return EbtISubpassInput; + case EbtUInt: + return EbtUSubpassInput; + default: + UNREACHABLE(); + return EbtVoid; + } +} + +TBasicType GetBasicTypeForSubpassInput(const TIntermSymbol *originSymbol) +{ + if (originSymbol->getName().beginsWith("gl_LastFragData")) + { + return GetBasicTypeForSubpassInput(EbtFloat); + } + + return GetBasicTypeForSubpassInput(originSymbol->getBasicType()); +} + +TIntermTyped *CreateSubpassLoadFuncCall(TSymbolTable *symbolTable, + TBasicType inputType, + TIntermSequence *arguments) +{ + return CreateBuiltInFunctionCallNode("subpassLoad", arguments, *symbolTable, 460); +} + +class ReplaceSubpassInputUtils +{ + public: + ReplaceSubpassInputUtils(TCompiler *compiler, + TSymbolTable *symbolTable, + TIntermBlock *root, + std::vector *uniforms, + const bool usedNonConstIndex, + const InputAttachmentIdxSet &constIndices, + const std::map &declaredVarVec) + : mCompiler(compiler), + mSymbolTable(symbolTable), + mRoot(root), + mUniforms(uniforms), + mUsedNonConstIndex(usedNonConstIndex), + mConstIndices(constIndices), + mDeclaredVarVec(declaredVarVec) + { + mDeclareVariables.clear(); + mInputAttachmentArrayIdSeq = 0; + mInputAttachmentVarList.clear(); + mDataLoadVarList.clear(); + } + virtual ~ReplaceSubpassInputUtils() = default; + + virtual bool declareSubpassInputVariables() = 0; + void declareVariablesForFetch(const unsigned int inputAttachmentIndex, + const TVariable *dataLoadVar) + { + mDataLoadVarList[inputAttachmentIndex] = dataLoadVar; + + TIntermDeclaration *dataLoadVarDecl = new TIntermDeclaration; + TIntermSymbol *dataLoadVarDeclarator = + new TIntermSymbol(mDataLoadVarList[inputAttachmentIndex]); + dataLoadVarDecl->appendDeclarator(dataLoadVarDeclarator); + mDeclareVariables.push_back(dataLoadVarDecl); + } + + virtual bool loadInputAttachmentData() = 0; + + void submitNewDeclaration() + { + for (unsigned int index = 0; index < mDeclareVariables.size(); index++) + { + mRoot->insertStatement(index, mDeclareVariables[index]); + } + + mDeclareVariables.clear(); + } + + protected: + bool declareSubpassInputVariableImpl(const TIntermSymbol *declaredVarSym, + const unsigned int inputAttachmentIndex); + void addInputAttachmentUniform(const unsigned int inputAttachmentIndex); + + TIntermNode *assignSubpassLoad(TIntermTyped *resultVar, + TIntermTyped *inputAttachmentSymbol, + const int targetVecSize); + TIntermNode *loadInputAttachmentDataImpl(const size_t arraySize, + const unsigned int inputAttachmentIndex, + const TVariable *loadInputAttachmentDataVar); + + ImmutableString getInputAttachmentName(unsigned int index); + ImmutableString getInputAttachmentArrayName(); + + TCompiler *mCompiler; + TSymbolTable *mSymbolTable; + TIntermBlock *mRoot; + std::vector *mUniforms; + const bool mUsedNonConstIndex; + const InputAttachmentIdxSet mConstIndices; + const std::map mDeclaredVarVec; + + TIntermSequence mDeclareVariables; + unsigned int mInputAttachmentArrayIdSeq; + std::map mInputAttachmentVarList; + std::map mDataLoadVarList; +}; + +ImmutableString ReplaceSubpassInputUtils::getInputAttachmentArrayName() +{ + constexpr ImmutableString suffix("Array"); + std::stringstream nameStream = sh::InitializeStream(); + nameStream << sh::kInputAttachmentName << suffix << mInputAttachmentArrayIdSeq++; + return ImmutableString(nameStream.str()); +} + +ImmutableString ReplaceSubpassInputUtils::getInputAttachmentName(unsigned int index) +{ + std::stringstream nameStream = sh::InitializeStream(); + nameStream << sh::kInputAttachmentName << index; + return ImmutableString(nameStream.str()); +} + +bool ReplaceSubpassInputUtils::declareSubpassInputVariableImpl( + const TIntermSymbol *declaredVarSym, + const unsigned int inputAttachmentIndex) +{ + TBasicType subpassInputType = GetBasicTypeForSubpassInput(declaredVarSym); + if (subpassInputType == EbtVoid) + { + return false; + } + + TType *inputAttachmentType = new TType(subpassInputType, EbpUndefined, EvqUniform, 1); + TLayoutQualifier inputAttachmentQualifier = inputAttachmentType->getLayoutQualifier(); + inputAttachmentQualifier.inputAttachmentIndex = inputAttachmentIndex; + inputAttachmentType->setLayoutQualifier(inputAttachmentQualifier); + + mInputAttachmentVarList[inputAttachmentIndex] = + new TVariable(mSymbolTable, getInputAttachmentName(inputAttachmentIndex), + inputAttachmentType, SymbolType::AngleInternal); + TIntermSymbol *inputAttachmentDeclarator = + new TIntermSymbol(mInputAttachmentVarList[inputAttachmentIndex]); + + TIntermDeclaration *inputAttachmentDecl = new TIntermDeclaration; + inputAttachmentDecl->appendDeclarator(inputAttachmentDeclarator); + + mDeclareVariables.push_back(inputAttachmentDecl); + + return true; +} + +void ReplaceSubpassInputUtils::addInputAttachmentUniform(const unsigned int inputAttachmentIndex) +{ + const TVariable *inputAttachmentVar = mInputAttachmentVarList[inputAttachmentIndex]; + + ShaderVariable inputAttachmentUniform; + inputAttachmentUniform.active = true; + inputAttachmentUniform.staticUse = true; + inputAttachmentUniform.name.assign(inputAttachmentVar->name().data(), + inputAttachmentVar->name().length()); + inputAttachmentUniform.mappedName.assign(inputAttachmentUniform.name); + inputAttachmentUniform.isFragmentInOut = true; + inputAttachmentUniform.location = + inputAttachmentVar->getType().getLayoutQualifier().inputAttachmentIndex; + mUniforms->push_back(inputAttachmentUniform); +} + +TIntermNode *ReplaceSubpassInputUtils::assignSubpassLoad(TIntermTyped *resultVar, + TIntermTyped *inputAttachmentSymbol, + const int targetVecSize) +{ + TIntermSequence *subpassArguments = new TIntermSequence(); + subpassArguments->push_back(inputAttachmentSymbol); + + // TODO: support interaction with multisampled framebuffers. For example, the sample ID needs + // to be provided to the built-in call here. http://anglebug.com/6195 + + TIntermTyped *subpassLoadFuncCall = CreateSubpassLoadFuncCall( + mSymbolTable, inputAttachmentSymbol->getBasicType(), subpassArguments); + + TIntermTyped *result = subpassLoadFuncCall; + if (targetVecSize < 4) + { + TVector fieldOffsets(targetVecSize); + for (int i = 0; i < targetVecSize; i++) + { + fieldOffsets[i] = i; + } + + result = new TIntermSwizzle(subpassLoadFuncCall, fieldOffsets); + } + + return new TIntermBinary(EOpAssign, resultVar, result); +} + +TIntermNode *ReplaceSubpassInputUtils::loadInputAttachmentDataImpl( + const size_t arraySize, + const unsigned int inputAttachmentIndex, + const TVariable *loadInputAttachmentDataVar) +{ + TIntermNode *retExpression = nullptr; + + TIntermSymbol *loadInputAttachmentDataSymbol = new TIntermSymbol(loadInputAttachmentDataVar); + + TIntermTyped *left = nullptr; + + if (arraySize > 0) + { + TIntermBlock *blockNode = new TIntermBlock(); + + for (uint32_t index = 0; index < arraySize; index++) + { + uint32_t attachmentIndex = inputAttachmentIndex + index; + + left = new TIntermBinary(EOpIndexDirect, loadInputAttachmentDataSymbol->deepCopy(), + CreateIndexNode(index)); + + blockNode->appendStatement( + assignSubpassLoad(left, new TIntermSymbol(mInputAttachmentVarList[attachmentIndex]), + left->getNominalSize())); + } + + retExpression = blockNode; + } + else + { + if (loadInputAttachmentDataSymbol->isArray()) + { + left = new TIntermBinary(EOpIndexDirect, loadInputAttachmentDataSymbol->deepCopy(), + CreateIndexNode(inputAttachmentIndex)); + } + else + { + left = loadInputAttachmentDataSymbol->deepCopy(); + } + + retExpression = assignSubpassLoad( + left, new TIntermSymbol(mInputAttachmentVarList[inputAttachmentIndex]), + left->getNominalSize()); + } + + return retExpression; +} + +class ReplaceGlLastFragDataUtils : public ReplaceSubpassInputUtils +{ + public: + ReplaceGlLastFragDataUtils(TCompiler *compiler, + TSymbolTable *symbolTable, + TIntermBlock *root, + std::vector *uniforms, + const bool usedNonConstIndex, + const InputAttachmentIdxSet &constIndices, + const std::map &declaredVarVec) + : ReplaceSubpassInputUtils(compiler, + symbolTable, + root, + uniforms, + usedNonConstIndex, + constIndices, + declaredVarVec) + {} + + bool declareSubpassInputVariables() override; + bool loadInputAttachmentData() override; +}; + +bool ReplaceGlLastFragDataUtils::declareSubpassInputVariables() +{ + for (auto declaredVar : mDeclaredVarVec) + { + const unsigned int inputAttachmentIndex = declaredVar.first; + if (mConstIndices.test(inputAttachmentIndex)) + { + if (!declareSubpassInputVariableImpl(declaredVar.second, inputAttachmentIndex)) + { + return false; + } + + addInputAttachmentUniform(inputAttachmentIndex); + } + } + + return true; +} + +bool ReplaceGlLastFragDataUtils::loadInputAttachmentData() +{ + TIntermNode *loadInputAttachmentBlock = new TIntermBlock(); + + for (auto declaredVar : mDeclaredVarVec) + { + const unsigned int inputAttachmentIndex = declaredVar.first; + if (mConstIndices.test(inputAttachmentIndex)) + { + loadInputAttachmentBlock->getAsBlock()->appendStatement(loadInputAttachmentDataImpl( + kArraySizeZero, inputAttachmentIndex, mDataLoadVarList[kArraySizeZero])); + } + } + + ASSERT(loadInputAttachmentBlock->getChildCount() > 0); + if (!RunAtTheBeginningOfShader(mCompiler, mRoot, loadInputAttachmentBlock)) + { + return false; + } + + return true; +} + +class ReplaceInOutUtils : public ReplaceSubpassInputUtils +{ + public: + ReplaceInOutUtils(TCompiler *compiler, + TSymbolTable *symbolTable, + TIntermBlock *root, + std::vector *uniforms, + const bool usedNonConstIndex, + const InputAttachmentIdxSet &constIndices, + const std::map &declaredVarVec) + : ReplaceSubpassInputUtils(compiler, + symbolTable, + root, + uniforms, + usedNonConstIndex, + constIndices, + declaredVarVec) + {} + + bool declareSubpassInputVariables() override; + bool loadInputAttachmentData() override; +}; + +bool ReplaceInOutUtils::declareSubpassInputVariables() +{ + for (auto declaredVar : mDeclaredVarVec) + { + const unsigned int inputAttachmentIndex = declaredVar.first; + const unsigned int arraySize = + (declaredVar.second->isArray() ? declaredVar.second->getOutermostArraySize() : 1); + + for (unsigned int arrayIndex = 0; arrayIndex < arraySize; arrayIndex++) + { + unsigned int attachmentIndex = inputAttachmentIndex + arrayIndex; + + if (!declareSubpassInputVariableImpl(declaredVar.second, attachmentIndex)) + { + return false; + } + + addInputAttachmentUniform(attachmentIndex); + } + } + + return true; +} + +bool ReplaceInOutUtils::loadInputAttachmentData() +{ + TIntermBlock *loadInputAttachmentBlock = new TIntermBlock(); + + for (auto declaredVar : mDeclaredVarVec) + { + const unsigned int inputAttachmentIndex = declaredVar.first; + size_t arraySize = + (declaredVar.second->isArray() ? declaredVar.second->getOutermostArraySize() : 0); + loadInputAttachmentBlock->appendStatement(loadInputAttachmentDataImpl( + arraySize, inputAttachmentIndex, mDataLoadVarList[inputAttachmentIndex])); + } + + ASSERT(loadInputAttachmentBlock->getChildCount() > 0); + if (!RunAtTheBeginningOfShader(mCompiler, mRoot, loadInputAttachmentBlock)) + { + return false; + } + + return true; +} + +} // anonymous namespace + +ANGLE_NO_DISCARD bool ReplaceLastFragData(TCompiler *compiler, + TIntermBlock *root, + TSymbolTable *symbolTable, + std::vector *uniforms) +{ + // Common variables + InputAttachmentIdxSet constIndices; + std::map glLastFragDataUsageMap; + unsigned int maxInputAttachmentIndex = 0; + bool usedNonConstIndex = false; + + // Get informations for gl_LastFragData + InputAttachmentReferenceTraverser informationTraverser( + &glLastFragDataUsageMap, &maxInputAttachmentIndex, &constIndices, &usedNonConstIndex); + root->traverse(&informationTraverser); + if (constIndices.none() && !usedNonConstIndex) + { + // No references of gl_LastFragData + return true; + } + + // Declare subpassInput uniform variables + ReplaceGlLastFragDataUtils replaceSubpassInputUtils(compiler, symbolTable, root, uniforms, + usedNonConstIndex, constIndices, + glLastFragDataUsageMap); + if (!replaceSubpassInputUtils.declareSubpassInputVariables()) + { + return false; + } + + // Declare the variables which store the result of subpassLoad function + const TVariable *glLastFragDataVar = nullptr; + if (glLastFragDataUsageMap.size() > 0) + { + glLastFragDataVar = &glLastFragDataUsageMap.begin()->second->variable(); + } + else + { + glLastFragDataVar = static_cast( + symbolTable->findBuiltIn(ImmutableString("gl_LastFragData"), 100)); + } + if (!glLastFragDataVar) + { + return false; + } + + ImmutableString loadVarName("ANGLELastFragData"); + TType *loadVarType = new TType(glLastFragDataVar->getType()); + loadVarType->setQualifier(EvqGlobal); + + TVariable *loadVar = + new TVariable(symbolTable, loadVarName, loadVarType, SymbolType::AngleInternal); + replaceSubpassInputUtils.declareVariablesForFetch(kInputAttachmentZero, loadVar); + + replaceSubpassInputUtils.submitNewDeclaration(); + + // 3) Add the routine for reading InputAttachment data + if (!replaceSubpassInputUtils.loadInputAttachmentData()) + { + return false; + } + + // 4) Replace gl_LastFragData with ANGLELastFragData + ReplaceVariableTraverser replaceTraverser(glLastFragDataVar, new TIntermSymbol(loadVar)); + root->traverse(&replaceTraverser); + if (!replaceTraverser.updateTree(compiler, root)) + { + return false; + } + + return true; +} + +ANGLE_NO_DISCARD bool ReplaceInOutVariables(TCompiler *compiler, + TIntermBlock *root, + TSymbolTable *symbolTable, + std::vector *uniforms) +{ + // Common variables + InputAttachmentIdxSet constIndices; + std::map declaredInOutVarMap; + unsigned int maxInputAttachmentIndex = 0; + bool usedNonConstIndex = false; + + // Get informations for gl_LastFragData + InputAttachmentReferenceTraverser informationTraverser( + &declaredInOutVarMap, &maxInputAttachmentIndex, &constIndices, &usedNonConstIndex); + root->traverse(&informationTraverser); + if (declaredInOutVarMap.size() == 0) + { + // No references of the variable decorated with a inout qualifier + return true; + } + + // Declare subpassInput uniform variables + ReplaceInOutUtils replaceSubpassInputUtils(compiler, symbolTable, root, uniforms, + usedNonConstIndex, constIndices, + declaredInOutVarMap); + if (!replaceSubpassInputUtils.declareSubpassInputVariables()) + { + return false; + } + + std::map toBeReplaced; + std::map newOutVarArray; + for (auto originInOutVarIter : declaredInOutVarMap) + { + const unsigned int inputAttachmentIndex = originInOutVarIter.first; + const TIntermSymbol *originInOutVar = originInOutVarIter.second; + + TType *newOutVarType = new TType(originInOutVar->getType()); + + // We just want to use the original variable decorated with a inout qualifier, except + // the qualifier itself. The qualifier will be changed from inout to out. + newOutVarType->setQualifier(EvqFragmentOut); + + TVariable *newOutVar = new TVariable(symbolTable, originInOutVar->getName(), newOutVarType, + SymbolType::UserDefined); + newOutVarArray[inputAttachmentIndex] = newOutVar; + replaceSubpassInputUtils.declareVariablesForFetch(inputAttachmentIndex, + newOutVarArray[inputAttachmentIndex]); + + toBeReplaced[inputAttachmentIndex] = &originInOutVar->variable(); + } + + replaceSubpassInputUtils.submitNewDeclaration(); + + // 3) Add the routine for reading InputAttachment data + if (!replaceSubpassInputUtils.loadInputAttachmentData()) + { + return false; + } + + std::map replacementMap; + for (auto newOutVar = newOutVarArray.begin(); newOutVar != newOutVarArray.end(); newOutVar++) + { + const unsigned int index = newOutVar->first; + replacementMap[toBeReplaced[index]] = new TIntermSymbol(newOutVar->second); + } + + // 4) Replace previous 'inout' variable with newly created 'inout' variable + ReplaceVariableTraverser replaceTraverser(replacementMap); + root->traverse(&replaceTraverser); + if (!replaceTraverser.updateTree(compiler, root)) + { + return false; + } + + return true; +} + +} // namespace sh diff --git a/src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.h b/src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.h new file mode 100644 index 0000000000..a8254f3852 --- /dev/null +++ b/src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.h @@ -0,0 +1,41 @@ +// +// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// ReplaceForShaderFramebufferFetch.h: Find any references to gl_LastFragData, and replace it with +// ANGLELastFragData. +// + +#ifndef COMPILER_TRANSLATOR_TREEUTIL_REPLACEFORSHADERFRAMEBUFFERFETCH_H_ +#define COMPILER_TRANSLATOR_TREEUTIL_REPLACEFORSHADERFRAMEBUFFERFETCH_H_ + +#include "common/angleutils.h" + +namespace sh +{ + +class TCompiler; +class TIntermBlock; +class TSymbolTable; +struct ShaderVariable; + +// Declare the global variable, "ANGLELastFragData", and at the begining of the main function, +// assign a subpassLoad value to it. Then replace every gl_LastFragData to "ANGLELastFragData". This +// is to solve the problem GLSL for Vulkan can't process gl_LastFragData variable. +ANGLE_NO_DISCARD bool ReplaceLastFragData(TCompiler *compiler, + TIntermBlock *root, + TSymbolTable *symbolTable, + std::vector *uniforms); + +// Similar to "ANGLELastFragData", but the difference is the variable for loading a framebuffer +// data. The variable decorated with a inout qualifier will be replaced to the variable decorated +// with a out qualifier. And this variable will be used to load the framebuffer data. +ANGLE_NO_DISCARD bool ReplaceInOutVariables(TCompiler *compiler, + TIntermBlock *root, + TSymbolTable *symbolTable, + std::vector *uniforms); + +} // namespace sh + +#endif // COMPILER_TRANSLATOR_TREEUTIL_REPLACEFORSHADERFRAMEBUFFERFETCH_H_ diff --git a/src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h b/src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h index 6bb74973f3..b605b14dc5 100644 --- a/src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h +++ b/src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h @@ -2,7 +2,7 @@ // Generated by gen_builtin_symbols.py using data from builtin_variables.json and // builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // @@ -1244,110 +1244,124 @@ class BuiltInId static constexpr const TSymbolUniqueId imageStore_IImageCube1_Int3_Int4 = TSymbolUniqueId(3239); static constexpr const TSymbolUniqueId imageStore_UImageCube1_Int3_UInt4 = TSymbolUniqueId(3240); - static constexpr const TSymbolUniqueId memoryBarrier = TSymbolUniqueId(3241); - static constexpr const TSymbolUniqueId memoryBarrierAtomicCounter = TSymbolUniqueId(3242); - static constexpr const TSymbolUniqueId memoryBarrierBuffer = TSymbolUniqueId(3243); - static constexpr const TSymbolUniqueId memoryBarrierImage = TSymbolUniqueId(3244); - static constexpr const TSymbolUniqueId barrier = TSymbolUniqueId(3245); - static constexpr const TSymbolUniqueId memoryBarrierShared = TSymbolUniqueId(3246); - static constexpr const TSymbolUniqueId groupMemoryBarrier = TSymbolUniqueId(3247); - static constexpr const TSymbolUniqueId EmitVertex = TSymbolUniqueId(3248); - static constexpr const TSymbolUniqueId EndPrimitive = TSymbolUniqueId(3249); - static constexpr const TSymbolUniqueId gl_DepthRangeParameters = TSymbolUniqueId(3250); - static constexpr const TSymbolUniqueId gl_DepthRange = TSymbolUniqueId(3251); - static constexpr const TSymbolUniqueId gl_MaxVertexAttribs = TSymbolUniqueId(3252); - static constexpr const TSymbolUniqueId gl_MaxVertexUniformVectors = TSymbolUniqueId(3253); - static constexpr const TSymbolUniqueId gl_MaxVertexTextureImageUnits = TSymbolUniqueId(3254); - static constexpr const TSymbolUniqueId gl_MaxCombinedTextureImageUnits = TSymbolUniqueId(3255); - static constexpr const TSymbolUniqueId gl_MaxTextureImageUnits = TSymbolUniqueId(3256); - static constexpr const TSymbolUniqueId gl_MaxFragmentUniformVectors = TSymbolUniqueId(3257); - static constexpr const TSymbolUniqueId gl_MaxVaryingVectors = TSymbolUniqueId(3258); - static constexpr const TSymbolUniqueId gl_MaxDrawBuffers = TSymbolUniqueId(3259); - static constexpr const TSymbolUniqueId gl_MaxDualSourceDrawBuffersEXT = TSymbolUniqueId(3260); - static constexpr const TSymbolUniqueId gl_MaxVertexOutputVectors = TSymbolUniqueId(3261); - static constexpr const TSymbolUniqueId gl_MaxFragmentInputVectors = TSymbolUniqueId(3262); - static constexpr const TSymbolUniqueId gl_MinProgramTexelOffset = TSymbolUniqueId(3263); - static constexpr const TSymbolUniqueId gl_MaxProgramTexelOffset = TSymbolUniqueId(3264); - static constexpr const TSymbolUniqueId gl_MaxImageUnits = TSymbolUniqueId(3265); - static constexpr const TSymbolUniqueId gl_MaxVertexImageUniforms = TSymbolUniqueId(3266); - static constexpr const TSymbolUniqueId gl_MaxFragmentImageUniforms = TSymbolUniqueId(3267); - static constexpr const TSymbolUniqueId gl_MaxComputeImageUniforms = TSymbolUniqueId(3268); - static constexpr const TSymbolUniqueId gl_MaxCombinedImageUniforms = TSymbolUniqueId(3269); + static constexpr const TSymbolUniqueId memoryBarrier = TSymbolUniqueId(3241); + static constexpr const TSymbolUniqueId memoryBarrierAtomicCounter = TSymbolUniqueId(3242); + static constexpr const TSymbolUniqueId memoryBarrierBuffer = TSymbolUniqueId(3243); + static constexpr const TSymbolUniqueId memoryBarrierImage = TSymbolUniqueId(3244); + static constexpr const TSymbolUniqueId barrier = TSymbolUniqueId(3245); + static constexpr const TSymbolUniqueId memoryBarrierShared = TSymbolUniqueId(3246); + static constexpr const TSymbolUniqueId groupMemoryBarrier = TSymbolUniqueId(3247); + static constexpr const TSymbolUniqueId EmitVertex = TSymbolUniqueId(3248); + static constexpr const TSymbolUniqueId EndPrimitive = TSymbolUniqueId(3249); + static constexpr const TSymbolUniqueId subpassLoad_SubpassInput1 = TSymbolUniqueId(3250); + static constexpr const TSymbolUniqueId pt01i = TSymbolUniqueId(3251); + static constexpr const TSymbolUniqueId subpassLoad_ISubpassInput1 = TSymbolUniqueId(3252); + static constexpr const TSymbolUniqueId pt01j = TSymbolUniqueId(3253); + static constexpr const TSymbolUniqueId subpassLoad_USubpassInput1 = TSymbolUniqueId(3254); + static constexpr const TSymbolUniqueId pt01k = TSymbolUniqueId(3255); + static constexpr const TSymbolUniqueId subpassLoad_SubpassInputMS1_Int1 = TSymbolUniqueId(3256); + static constexpr const TSymbolUniqueId pt01l = TSymbolUniqueId(3257); + static constexpr const TSymbolUniqueId subpassLoad_ISubpassInputMS1_Int1 = + TSymbolUniqueId(3258); + static constexpr const TSymbolUniqueId pt01m = TSymbolUniqueId(3259); + static constexpr const TSymbolUniqueId subpassLoad_USubpassInputMS1_Int1 = + TSymbolUniqueId(3260); + static constexpr const TSymbolUniqueId pt01n = TSymbolUniqueId(3261); + static constexpr const TSymbolUniqueId gl_DepthRangeParameters = TSymbolUniqueId(3262); + static constexpr const TSymbolUniqueId gl_DepthRange = TSymbolUniqueId(3263); + static constexpr const TSymbolUniqueId gl_MaxVertexAttribs = TSymbolUniqueId(3264); + static constexpr const TSymbolUniqueId gl_MaxVertexUniformVectors = TSymbolUniqueId(3265); + static constexpr const TSymbolUniqueId gl_MaxVertexTextureImageUnits = TSymbolUniqueId(3266); + static constexpr const TSymbolUniqueId gl_MaxCombinedTextureImageUnits = TSymbolUniqueId(3267); + static constexpr const TSymbolUniqueId gl_MaxTextureImageUnits = TSymbolUniqueId(3268); + static constexpr const TSymbolUniqueId gl_MaxFragmentUniformVectors = TSymbolUniqueId(3269); + static constexpr const TSymbolUniqueId gl_MaxVaryingVectors = TSymbolUniqueId(3270); + static constexpr const TSymbolUniqueId gl_MaxDrawBuffers = TSymbolUniqueId(3271); + static constexpr const TSymbolUniqueId gl_MaxDualSourceDrawBuffersEXT = TSymbolUniqueId(3272); + static constexpr const TSymbolUniqueId gl_MaxVertexOutputVectors = TSymbolUniqueId(3273); + static constexpr const TSymbolUniqueId gl_MaxFragmentInputVectors = TSymbolUniqueId(3274); + static constexpr const TSymbolUniqueId gl_MinProgramTexelOffset = TSymbolUniqueId(3275); + static constexpr const TSymbolUniqueId gl_MaxProgramTexelOffset = TSymbolUniqueId(3276); + static constexpr const TSymbolUniqueId gl_MaxImageUnits = TSymbolUniqueId(3277); + static constexpr const TSymbolUniqueId gl_MaxVertexImageUniforms = TSymbolUniqueId(3278); + static constexpr const TSymbolUniqueId gl_MaxFragmentImageUniforms = TSymbolUniqueId(3279); + static constexpr const TSymbolUniqueId gl_MaxComputeImageUniforms = TSymbolUniqueId(3280); + static constexpr const TSymbolUniqueId gl_MaxCombinedImageUniforms = TSymbolUniqueId(3281); static constexpr const TSymbolUniqueId gl_MaxCombinedShaderOutputResources = - TSymbolUniqueId(3270); - static constexpr const TSymbolUniqueId gl_MaxComputeWorkGroupCount = TSymbolUniqueId(3271); - static constexpr const TSymbolUniqueId gl_MaxComputeWorkGroupSize = TSymbolUniqueId(3272); - static constexpr const TSymbolUniqueId gl_MaxComputeUniformComponents = TSymbolUniqueId(3273); - static constexpr const TSymbolUniqueId gl_MaxComputeTextureImageUnits = TSymbolUniqueId(3274); - static constexpr const TSymbolUniqueId gl_MaxComputeAtomicCounters = TSymbolUniqueId(3275); + TSymbolUniqueId(3282); + static constexpr const TSymbolUniqueId gl_MaxComputeWorkGroupCount = TSymbolUniqueId(3283); + static constexpr const TSymbolUniqueId gl_MaxComputeWorkGroupSize = TSymbolUniqueId(3284); + static constexpr const TSymbolUniqueId gl_MaxComputeUniformComponents = TSymbolUniqueId(3285); + static constexpr const TSymbolUniqueId gl_MaxComputeTextureImageUnits = TSymbolUniqueId(3286); + static constexpr const TSymbolUniqueId gl_MaxComputeAtomicCounters = TSymbolUniqueId(3287); static constexpr const TSymbolUniqueId gl_MaxComputeAtomicCounterBuffers = - TSymbolUniqueId(3276); - static constexpr const TSymbolUniqueId gl_MaxVertexAtomicCounters = TSymbolUniqueId(3277); - static constexpr const TSymbolUniqueId gl_MaxFragmentAtomicCounters = TSymbolUniqueId(3278); - static constexpr const TSymbolUniqueId gl_MaxCombinedAtomicCounters = TSymbolUniqueId(3279); - static constexpr const TSymbolUniqueId gl_MaxAtomicCounterBindings = TSymbolUniqueId(3280); - static constexpr const TSymbolUniqueId gl_MaxVertexAtomicCounterBuffers = TSymbolUniqueId(3281); + TSymbolUniqueId(3288); + static constexpr const TSymbolUniqueId gl_MaxVertexAtomicCounters = TSymbolUniqueId(3289); + static constexpr const TSymbolUniqueId gl_MaxFragmentAtomicCounters = TSymbolUniqueId(3290); + static constexpr const TSymbolUniqueId gl_MaxCombinedAtomicCounters = TSymbolUniqueId(3291); + static constexpr const TSymbolUniqueId gl_MaxAtomicCounterBindings = TSymbolUniqueId(3292); + static constexpr const TSymbolUniqueId gl_MaxVertexAtomicCounterBuffers = TSymbolUniqueId(3293); static constexpr const TSymbolUniqueId gl_MaxFragmentAtomicCounterBuffers = - TSymbolUniqueId(3282); + TSymbolUniqueId(3294); static constexpr const TSymbolUniqueId gl_MaxCombinedAtomicCounterBuffers = - TSymbolUniqueId(3283); - static constexpr const TSymbolUniqueId gl_MaxAtomicCounterBufferSize = TSymbolUniqueId(3284); - static constexpr const TSymbolUniqueId gl_MaxGeometryInputComponents = TSymbolUniqueId(3285); - static constexpr const TSymbolUniqueId gl_MaxGeometryOutputComponents = TSymbolUniqueId(3286); - static constexpr const TSymbolUniqueId gl_MaxGeometryImageUniforms = TSymbolUniqueId(3287); - static constexpr const TSymbolUniqueId gl_MaxGeometryTextureImageUnits = TSymbolUniqueId(3288); - static constexpr const TSymbolUniqueId gl_MaxGeometryOutputVertices = TSymbolUniqueId(3289); + TSymbolUniqueId(3295); + static constexpr const TSymbolUniqueId gl_MaxAtomicCounterBufferSize = TSymbolUniqueId(3296); + static constexpr const TSymbolUniqueId gl_MaxGeometryInputComponents = TSymbolUniqueId(3297); + static constexpr const TSymbolUniqueId gl_MaxGeometryOutputComponents = TSymbolUniqueId(3298); + static constexpr const TSymbolUniqueId gl_MaxGeometryImageUniforms = TSymbolUniqueId(3299); + static constexpr const TSymbolUniqueId gl_MaxGeometryTextureImageUnits = TSymbolUniqueId(3300); + static constexpr const TSymbolUniqueId gl_MaxGeometryOutputVertices = TSymbolUniqueId(3301); static constexpr const TSymbolUniqueId gl_MaxGeometryTotalOutputComponents = - TSymbolUniqueId(3290); - static constexpr const TSymbolUniqueId gl_MaxGeometryUniformComponents = TSymbolUniqueId(3291); - static constexpr const TSymbolUniqueId gl_MaxGeometryAtomicCounters = TSymbolUniqueId(3292); + TSymbolUniqueId(3302); + static constexpr const TSymbolUniqueId gl_MaxGeometryUniformComponents = TSymbolUniqueId(3303); + static constexpr const TSymbolUniqueId gl_MaxGeometryAtomicCounters = TSymbolUniqueId(3304); static constexpr const TSymbolUniqueId gl_MaxGeometryAtomicCounterBuffers = - TSymbolUniqueId(3293); - static constexpr const TSymbolUniqueId gl_FragCoord = TSymbolUniqueId(3294); - static constexpr const TSymbolUniqueId gl_FrontFacing = TSymbolUniqueId(3295); - static constexpr const TSymbolUniqueId gl_PointCoord = TSymbolUniqueId(3296); - static constexpr const TSymbolUniqueId gl_FragColor = TSymbolUniqueId(3297); - static constexpr const TSymbolUniqueId gl_FragData = TSymbolUniqueId(3298); - static constexpr const TSymbolUniqueId gl_FragDepth = TSymbolUniqueId(3299); - static constexpr const TSymbolUniqueId gl_SecondaryFragColorEXT = TSymbolUniqueId(3300); - static constexpr const TSymbolUniqueId gl_SecondaryFragDataEXT = TSymbolUniqueId(3301); - static constexpr const TSymbolUniqueId gl_FragDepthEXT = TSymbolUniqueId(3302); - static constexpr const TSymbolUniqueId gl_LastFragData = TSymbolUniqueId(3303); - static constexpr const TSymbolUniqueId gl_LastFragColor = TSymbolUniqueId(3304); - static constexpr const TSymbolUniqueId gl_LastFragDataNV = TSymbolUniqueId(3305); - static constexpr const TSymbolUniqueId gl_LastFragColorARM = TSymbolUniqueId(3306); - static constexpr const TSymbolUniqueId gl_PrimitiveID = TSymbolUniqueId(3307); - static constexpr const TSymbolUniqueId gl_Layer = TSymbolUniqueId(3308); - static constexpr const TSymbolUniqueId gl_Position = TSymbolUniqueId(3309); - static constexpr const TSymbolUniqueId gl_PointSize = TSymbolUniqueId(3310); - static constexpr const TSymbolUniqueId gl_InstanceID = TSymbolUniqueId(3311); - static constexpr const TSymbolUniqueId gl_InstanceIndex = TSymbolUniqueId(3312); - static constexpr const TSymbolUniqueId gl_VertexID = TSymbolUniqueId(3313); - static constexpr const TSymbolUniqueId gl_VertexIndex = TSymbolUniqueId(3314); - static constexpr const TSymbolUniqueId gl_ViewportIndex = TSymbolUniqueId(3315); - static constexpr const TSymbolUniqueId gl_LayerVS = TSymbolUniqueId(3316); - static constexpr const TSymbolUniqueId gl_DrawID = TSymbolUniqueId(3317); - static constexpr const TSymbolUniqueId gl_BaseVertex = TSymbolUniqueId(3318); - static constexpr const TSymbolUniqueId gl_BaseInstance = TSymbolUniqueId(3319); - static constexpr const TSymbolUniqueId angle_BaseVertex = TSymbolUniqueId(3320); - static constexpr const TSymbolUniqueId angle_BaseInstance = TSymbolUniqueId(3321); - static constexpr const TSymbolUniqueId gl_ClipDistance = TSymbolUniqueId(3322); - static constexpr const TSymbolUniqueId gl_MaxClipDistances = TSymbolUniqueId(3323); - static constexpr const TSymbolUniqueId gl_NumWorkGroups = TSymbolUniqueId(3324); - static constexpr const TSymbolUniqueId gl_WorkGroupSize = TSymbolUniqueId(3325); - static constexpr const TSymbolUniqueId gl_WorkGroupID = TSymbolUniqueId(3326); - static constexpr const TSymbolUniqueId gl_LocalInvocationID = TSymbolUniqueId(3327); - static constexpr const TSymbolUniqueId gl_GlobalInvocationID = TSymbolUniqueId(3328); - static constexpr const TSymbolUniqueId gl_LocalInvocationIndex = TSymbolUniqueId(3329); - static constexpr const TSymbolUniqueId gl_PrimitiveIDIn = TSymbolUniqueId(3330); - static constexpr const TSymbolUniqueId gl_InvocationID = TSymbolUniqueId(3331); - static constexpr const TSymbolUniqueId gl_PrimitiveIDGS = TSymbolUniqueId(3332); - static constexpr const TSymbolUniqueId gl_LayerGS = TSymbolUniqueId(3333); - static constexpr const TSymbolUniqueId gl_PerVertex = TSymbolUniqueId(3334); - static constexpr const TSymbolUniqueId gl_in = TSymbolUniqueId(3335); - static constexpr const TSymbolUniqueId gl_PerVertexOutBlock = TSymbolUniqueId(3336); - static constexpr const TSymbolUniqueId gl_PositionGS = TSymbolUniqueId(3337); - static constexpr const TSymbolUniqueId gl_ViewID_OVR = TSymbolUniqueId(3338); + TSymbolUniqueId(3305); + static constexpr const TSymbolUniqueId gl_FragCoord = TSymbolUniqueId(3306); + static constexpr const TSymbolUniqueId gl_FrontFacing = TSymbolUniqueId(3307); + static constexpr const TSymbolUniqueId gl_PointCoord = TSymbolUniqueId(3308); + static constexpr const TSymbolUniqueId gl_FragColor = TSymbolUniqueId(3309); + static constexpr const TSymbolUniqueId gl_FragData = TSymbolUniqueId(3310); + static constexpr const TSymbolUniqueId gl_FragDepth = TSymbolUniqueId(3311); + static constexpr const TSymbolUniqueId gl_SecondaryFragColorEXT = TSymbolUniqueId(3312); + static constexpr const TSymbolUniqueId gl_SecondaryFragDataEXT = TSymbolUniqueId(3313); + static constexpr const TSymbolUniqueId gl_FragDepthEXT = TSymbolUniqueId(3314); + static constexpr const TSymbolUniqueId gl_LastFragData = TSymbolUniqueId(3315); + static constexpr const TSymbolUniqueId gl_LastFragColor = TSymbolUniqueId(3316); + static constexpr const TSymbolUniqueId gl_LastFragDataNV = TSymbolUniqueId(3317); + static constexpr const TSymbolUniqueId gl_LastFragColorARM = TSymbolUniqueId(3318); + static constexpr const TSymbolUniqueId gl_PrimitiveID = TSymbolUniqueId(3319); + static constexpr const TSymbolUniqueId gl_Layer = TSymbolUniqueId(3320); + static constexpr const TSymbolUniqueId gl_Position = TSymbolUniqueId(3321); + static constexpr const TSymbolUniqueId gl_PointSize = TSymbolUniqueId(3322); + static constexpr const TSymbolUniqueId gl_InstanceID = TSymbolUniqueId(3323); + static constexpr const TSymbolUniqueId gl_InstanceIndex = TSymbolUniqueId(3324); + static constexpr const TSymbolUniqueId gl_VertexID = TSymbolUniqueId(3325); + static constexpr const TSymbolUniqueId gl_VertexIndex = TSymbolUniqueId(3326); + static constexpr const TSymbolUniqueId gl_ViewportIndex = TSymbolUniqueId(3327); + static constexpr const TSymbolUniqueId gl_LayerVS = TSymbolUniqueId(3328); + static constexpr const TSymbolUniqueId gl_DrawID = TSymbolUniqueId(3329); + static constexpr const TSymbolUniqueId gl_BaseVertex = TSymbolUniqueId(3330); + static constexpr const TSymbolUniqueId gl_BaseInstance = TSymbolUniqueId(3331); + static constexpr const TSymbolUniqueId angle_BaseVertex = TSymbolUniqueId(3332); + static constexpr const TSymbolUniqueId angle_BaseInstance = TSymbolUniqueId(3333); + static constexpr const TSymbolUniqueId gl_ClipDistance = TSymbolUniqueId(3334); + static constexpr const TSymbolUniqueId gl_MaxClipDistances = TSymbolUniqueId(3335); + static constexpr const TSymbolUniqueId gl_NumWorkGroups = TSymbolUniqueId(3336); + static constexpr const TSymbolUniqueId gl_WorkGroupSize = TSymbolUniqueId(3337); + static constexpr const TSymbolUniqueId gl_WorkGroupID = TSymbolUniqueId(3338); + static constexpr const TSymbolUniqueId gl_LocalInvocationID = TSymbolUniqueId(3339); + static constexpr const TSymbolUniqueId gl_GlobalInvocationID = TSymbolUniqueId(3340); + static constexpr const TSymbolUniqueId gl_LocalInvocationIndex = TSymbolUniqueId(3341); + static constexpr const TSymbolUniqueId gl_PrimitiveIDIn = TSymbolUniqueId(3342); + static constexpr const TSymbolUniqueId gl_InvocationID = TSymbolUniqueId(3343); + static constexpr const TSymbolUniqueId gl_PrimitiveIDGS = TSymbolUniqueId(3344); + static constexpr const TSymbolUniqueId gl_LayerGS = TSymbolUniqueId(3345); + static constexpr const TSymbolUniqueId gl_PerVertex = TSymbolUniqueId(3346); + static constexpr const TSymbolUniqueId gl_in = TSymbolUniqueId(3347); + static constexpr const TSymbolUniqueId gl_PerVertexOutBlock = TSymbolUniqueId(3348); + static constexpr const TSymbolUniqueId gl_PositionGS = TSymbolUniqueId(3349); + static constexpr const TSymbolUniqueId gl_ViewID_OVR = TSymbolUniqueId(3350); }; // class BuiltInId diff --git a/src/compiler/translator/tree_util/BuiltIn_complete_autogen.h b/src/compiler/translator/tree_util/BuiltIn_complete_autogen.h index 4aa52cedce..f534fb7176 100644 --- a/src/compiler/translator/tree_util/BuiltIn_complete_autogen.h +++ b/src/compiler/translator/tree_util/BuiltIn_complete_autogen.h @@ -2,7 +2,7 @@ // Generated by gen_builtin_symbols.py using data from builtin_variables.json and // builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // diff --git a/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp b/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp new file mode 100644 index 0000000000..99be6add13 --- /dev/null +++ b/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp @@ -0,0 +1,35 @@ +// +// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// RunAtTheBeginningOfShader.cpp: Add code to be run at the beginning of the shader. +// void main() { body } +// => +// void main() +// { +// codeToRun +// body +// } +// + +#include "compiler/translator/tree_util/RunAtTheBeginningOfShader.h" + +#include "compiler/translator/Compiler.h" +#include "compiler/translator/IntermNode.h" +#include "compiler/translator/SymbolTable.h" +#include "compiler/translator/tree_util/FindMain.h" +#include "compiler/translator/tree_util/IntermNode_util.h" +#include "compiler/translator/tree_util/IntermTraverse.h" + +namespace sh +{ + +bool RunAtTheBeginningOfShader(TCompiler *compiler, TIntermBlock *root, TIntermNode *codeToRun) +{ + TIntermFunctionDefinition *main = FindMain(root); + main->getBody()->insertStatement(0, codeToRun); + return compiler->validateAST(root); +} + +} // namespace sh diff --git a/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.h b/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.h new file mode 100644 index 0000000000..405a02fc3d --- /dev/null +++ b/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.h @@ -0,0 +1,27 @@ +// +// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// RunAtTheBeginningOfShader.h: Add code to be run at the beginning of the shader. +// + +#ifndef COMPILER_TRANSLATOR_TREEUTIL_RUNATTHEBEGINNINGOFSHADER_H_ +#define COMPILER_TRANSLATOR_TREEUTIL_RUNATTHEBEGINNINGOFSHADER_H_ + +#include "common/angleutils.h" + +namespace sh +{ + +class TCompiler; +class TIntermBlock; +class TIntermNode; + +ANGLE_NO_DISCARD bool RunAtTheBeginningOfShader(TCompiler *compiler, + TIntermBlock *root, + TIntermNode *codeToRun); + +} // namespace sh + +#endif // COMPILER_TRANSLATOR_TREEUTIL_RUNATTHEBEGINNINGOFSHADER_H_ diff --git a/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp b/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp index 6bb1f6d484..1712d76280 100644 --- a/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp +++ b/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp @@ -1,7 +1,7 @@ // GENERATED FILE - DO NOT EDIT. // Generated by gen_builtin_symbols.py using data from builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // @@ -16,1102 +16,1097 @@ namespace sh TEST(ImmutableStringTest, ScriptGeneratedHashesMatch) { - ASSERT_EQ(0x0000026eu, ImmutableString("radians(00B").mangledNameHash()); - ASSERT_EQ(0x00000148u, ImmutableString("radians(10B").mangledNameHash()); - ASSERT_EQ(0x0000010au, ImmutableString("radians(20B").mangledNameHash()); - ASSERT_EQ(0x0000039du, ImmutableString("radians(30B").mangledNameHash()); - ASSERT_EQ(0x000001dcu, ImmutableString("degrees(00B").mangledNameHash()); - ASSERT_EQ(0x0000031eu, ImmutableString("degrees(10B").mangledNameHash()); + ASSERT_EQ(0x00000274u, ImmutableString("radians(00B").mangledNameHash()); + ASSERT_EQ(0x0000014du, ImmutableString("radians(10B").mangledNameHash()); + ASSERT_EQ(0x0000010eu, ImmutableString("radians(20B").mangledNameHash()); + ASSERT_EQ(0x000003a3u, ImmutableString("radians(30B").mangledNameHash()); + ASSERT_EQ(0x000001e2u, ImmutableString("degrees(00B").mangledNameHash()); + ASSERT_EQ(0x00000324u, ImmutableString("degrees(10B").mangledNameHash()); ASSERT_EQ(0x00000046u, ImmutableString("degrees(20B").mangledNameHash()); - ASSERT_EQ(0x0000016bu, ImmutableString("degrees(30B").mangledNameHash()); - ASSERT_EQ(0x00000349u, ImmutableString("sin(00B").mangledNameHash()); - ASSERT_EQ(0x00000205u, ImmutableString("sin(10B").mangledNameHash()); - ASSERT_EQ(0x00000226u, ImmutableString("sin(20B").mangledNameHash()); - ASSERT_EQ(0x00000111u, ImmutableString("sin(30B").mangledNameHash()); - ASSERT_EQ(0x00000211u, ImmutableString("cos(00B").mangledNameHash()); - ASSERT_EQ(0x00000358u, ImmutableString("cos(10B").mangledNameHash()); - ASSERT_EQ(0x0000039bu, ImmutableString("cos(20B").mangledNameHash()); - ASSERT_EQ(0x000002b5u, ImmutableString("cos(30B").mangledNameHash()); - ASSERT_EQ(0x00000208u, ImmutableString("tan(00B").mangledNameHash()); - ASSERT_EQ(0x0000034fu, ImmutableString("tan(10B").mangledNameHash()); - ASSERT_EQ(0x0000039fu, ImmutableString("tan(20B").mangledNameHash()); - ASSERT_EQ(0x000000f6u, ImmutableString("tan(30B").mangledNameHash()); - ASSERT_EQ(0x00000233u, ImmutableString("asin(00B").mangledNameHash()); - ASSERT_EQ(0x0000037au, ImmutableString("asin(10B").mangledNameHash()); + ASSERT_EQ(0x00000170u, ImmutableString("degrees(30B").mangledNameHash()); + ASSERT_EQ(0x0000034fu, ImmutableString("sin(00B").mangledNameHash()); + ASSERT_EQ(0x0000020bu, ImmutableString("sin(10B").mangledNameHash()); + ASSERT_EQ(0x0000022cu, ImmutableString("sin(20B").mangledNameHash()); + ASSERT_EQ(0x00000115u, ImmutableString("sin(30B").mangledNameHash()); + ASSERT_EQ(0x00000217u, ImmutableString("cos(00B").mangledNameHash()); + ASSERT_EQ(0x0000035eu, ImmutableString("cos(10B").mangledNameHash()); + ASSERT_EQ(0x000003a1u, ImmutableString("cos(20B").mangledNameHash()); + ASSERT_EQ(0x000002bbu, ImmutableString("cos(30B").mangledNameHash()); + ASSERT_EQ(0x0000020eu, ImmutableString("tan(00B").mangledNameHash()); + ASSERT_EQ(0x00000355u, ImmutableString("tan(10B").mangledNameHash()); + ASSERT_EQ(0x000003a5u, ImmutableString("tan(20B").mangledNameHash()); + ASSERT_EQ(0x000000fau, ImmutableString("tan(30B").mangledNameHash()); + ASSERT_EQ(0x00000239u, ImmutableString("asin(00B").mangledNameHash()); + ASSERT_EQ(0x00000380u, ImmutableString("asin(10B").mangledNameHash()); ASSERT_EQ(0x00000018u, ImmutableString("asin(20B").mangledNameHash()); - ASSERT_EQ(0x00000138u, ImmutableString("asin(30B").mangledNameHash()); + ASSERT_EQ(0x0000013du, ImmutableString("asin(30B").mangledNameHash()); ASSERT_EQ(0x00000061u, ImmutableString("acos(00B").mangledNameHash()); - ASSERT_EQ(0x000002e8u, ImmutableString("acos(10B").mangledNameHash()); - ASSERT_EQ(0x0000028au, ImmutableString("acos(20B").mangledNameHash()); - ASSERT_EQ(0x00000169u, ImmutableString("acos(30B").mangledNameHash()); - ASSERT_EQ(0x000001f6u, ImmutableString("atan(00B00B").mangledNameHash()); + ASSERT_EQ(0x000002eeu, ImmutableString("acos(10B").mangledNameHash()); + ASSERT_EQ(0x00000290u, ImmutableString("acos(20B").mangledNameHash()); + ASSERT_EQ(0x0000016eu, ImmutableString("acos(30B").mangledNameHash()); + ASSERT_EQ(0x000001fcu, ImmutableString("atan(00B00B").mangledNameHash()); ASSERT_EQ(0x00000031u, ImmutableString("atan(10B10B").mangledNameHash()); - ASSERT_EQ(0x000001cbu, ImmutableString("atan(20B20B").mangledNameHash()); - ASSERT_EQ(0x00000133u, ImmutableString("atan(30B30B").mangledNameHash()); - ASSERT_EQ(0x000001e3u, ImmutableString("atan(00B").mangledNameHash()); + ASSERT_EQ(0x000001d1u, ImmutableString("atan(20B20B").mangledNameHash()); + ASSERT_EQ(0x00000137u, ImmutableString("atan(30B30B").mangledNameHash()); + ASSERT_EQ(0x000001e9u, ImmutableString("atan(00B").mangledNameHash()); ASSERT_EQ(0x00000071u, ImmutableString("atan(10B").mangledNameHash()); ASSERT_EQ(0x00000087u, ImmutableString("atan(20B").mangledNameHash()); - ASSERT_EQ(0x00000325u, ImmutableString("atan(30B").mangledNameHash()); - ASSERT_EQ(0x0000028cu, ImmutableString("sinh(00B").mangledNameHash()); - ASSERT_EQ(0x00000324u, ImmutableString("sinh(10B").mangledNameHash()); - ASSERT_EQ(0x00000182u, ImmutableString("sinh(20B").mangledNameHash()); - ASSERT_EQ(0x000000eeu, ImmutableString("sinh(30B").mangledNameHash()); - ASSERT_EQ(0x0000015bu, ImmutableString("cosh(00B").mangledNameHash()); - ASSERT_EQ(0x00000308u, ImmutableString("cosh(10B").mangledNameHash()); - ASSERT_EQ(0x00000337u, ImmutableString("cosh(20B").mangledNameHash()); - ASSERT_EQ(0x00000269u, ImmutableString("cosh(30B").mangledNameHash()); + ASSERT_EQ(0x0000032bu, ImmutableString("atan(30B").mangledNameHash()); + ASSERT_EQ(0x00000292u, ImmutableString("sinh(00B").mangledNameHash()); + ASSERT_EQ(0x0000032au, ImmutableString("sinh(10B").mangledNameHash()); + ASSERT_EQ(0x00000187u, ImmutableString("sinh(20B").mangledNameHash()); + ASSERT_EQ(0x000000f1u, ImmutableString("sinh(30B").mangledNameHash()); + ASSERT_EQ(0x00000160u, ImmutableString("cosh(00B").mangledNameHash()); + ASSERT_EQ(0x0000030eu, ImmutableString("cosh(10B").mangledNameHash()); + ASSERT_EQ(0x0000033du, ImmutableString("cosh(20B").mangledNameHash()); + ASSERT_EQ(0x0000026fu, ImmutableString("cosh(30B").mangledNameHash()); ASSERT_EQ(0x00000047u, ImmutableString("tanh(00B").mangledNameHash()); - ASSERT_EQ(0x0000016au, ImmutableString("tanh(10B").mangledNameHash()); - ASSERT_EQ(0x0000027eu, ImmutableString("tanh(20B").mangledNameHash()); + ASSERT_EQ(0x0000016fu, ImmutableString("tanh(10B").mangledNameHash()); + ASSERT_EQ(0x00000284u, ImmutableString("tanh(20B").mangledNameHash()); ASSERT_EQ(0x0000000du, ImmutableString("tanh(30B").mangledNameHash()); - ASSERT_EQ(0x00000263u, ImmutableString("asinh(00B").mangledNameHash()); - ASSERT_EQ(0x000003a3u, ImmutableString("asinh(10B").mangledNameHash()); - ASSERT_EQ(0x000000f3u, ImmutableString("asinh(20B").mangledNameHash()); - ASSERT_EQ(0x0000020cu, ImmutableString("asinh(30B").mangledNameHash()); - ASSERT_EQ(0x0000017fu, ImmutableString("acosh(00B").mangledNameHash()); - ASSERT_EQ(0x000000acu, ImmutableString("acosh(10B").mangledNameHash()); + ASSERT_EQ(0x00000269u, ImmutableString("asinh(00B").mangledNameHash()); + ASSERT_EQ(0x000003a9u, ImmutableString("asinh(10B").mangledNameHash()); + ASSERT_EQ(0x000000f7u, ImmutableString("asinh(20B").mangledNameHash()); + ASSERT_EQ(0x00000212u, ImmutableString("asinh(30B").mangledNameHash()); + ASSERT_EQ(0x00000184u, ImmutableString("acosh(00B").mangledNameHash()); + ASSERT_EQ(0x000000adu, ImmutableString("acosh(10B").mangledNameHash()); ASSERT_EQ(0x0000001du, ImmutableString("acosh(20B").mangledNameHash()); - ASSERT_EQ(0x000002a5u, ImmutableString("acosh(30B").mangledNameHash()); + ASSERT_EQ(0x000002abu, ImmutableString("acosh(30B").mangledNameHash()); ASSERT_EQ(0x00000083u, ImmutableString("atanh(00B").mangledNameHash()); ASSERT_EQ(0x0000001eu, ImmutableString("atanh(10B").mangledNameHash()); - ASSERT_EQ(0x000002cdu, ImmutableString("atanh(20B").mangledNameHash()); - ASSERT_EQ(0x00000197u, ImmutableString("atanh(30B").mangledNameHash()); - ASSERT_EQ(0x00000191u, ImmutableString("pow(00B00B").mangledNameHash()); + ASSERT_EQ(0x000002d3u, ImmutableString("atanh(20B").mangledNameHash()); + ASSERT_EQ(0x0000019du, ImmutableString("atanh(30B").mangledNameHash()); + ASSERT_EQ(0x00000197u, ImmutableString("pow(00B00B").mangledNameHash()); ASSERT_EQ(0x0000008eu, ImmutableString("pow(10B10B").mangledNameHash()); - ASSERT_EQ(0x00000300u, ImmutableString("pow(20B20B").mangledNameHash()); - ASSERT_EQ(0x00000219u, ImmutableString("pow(30B30B").mangledNameHash()); - ASSERT_EQ(0x0000030du, ImmutableString("exp(00B").mangledNameHash()); + ASSERT_EQ(0x00000306u, ImmutableString("pow(20B20B").mangledNameHash()); + ASSERT_EQ(0x0000021fu, ImmutableString("pow(30B30B").mangledNameHash()); + ASSERT_EQ(0x00000313u, ImmutableString("exp(00B").mangledNameHash()); ASSERT_EQ(0x00000078u, ImmutableString("exp(10B").mangledNameHash()); - ASSERT_EQ(0x0000017cu, ImmutableString("exp(20B").mangledNameHash()); - ASSERT_EQ(0x00000297u, ImmutableString("exp(30B").mangledNameHash()); - ASSERT_EQ(0x0000029eu, ImmutableString("log(00B").mangledNameHash()); - ASSERT_EQ(0x00000180u, ImmutableString("log(10B").mangledNameHash()); - ASSERT_EQ(0x00000137u, ImmutableString("log(20B").mangledNameHash()); - ASSERT_EQ(0x000000ceu, ImmutableString("log(30B").mangledNameHash()); - ASSERT_EQ(0x0000039cu, ImmutableString("exp2(00B").mangledNameHash()); - ASSERT_EQ(0x000000fbu, ImmutableString("exp2(10B").mangledNameHash()); - ASSERT_EQ(0x00000146u, ImmutableString("exp2(20B").mangledNameHash()); - ASSERT_EQ(0x0000025au, ImmutableString("exp2(30B").mangledNameHash()); - ASSERT_EQ(0x00000165u, ImmutableString("log2(00B").mangledNameHash()); + ASSERT_EQ(0x00000181u, ImmutableString("exp(20B").mangledNameHash()); + ASSERT_EQ(0x0000029du, ImmutableString("exp(30B").mangledNameHash()); + ASSERT_EQ(0x000002a4u, ImmutableString("log(00B").mangledNameHash()); + ASSERT_EQ(0x00000185u, ImmutableString("log(10B").mangledNameHash()); + ASSERT_EQ(0x0000013cu, ImmutableString("log(20B").mangledNameHash()); + ASSERT_EQ(0x000000d1u, ImmutableString("log(30B").mangledNameHash()); + ASSERT_EQ(0x000003a2u, ImmutableString("exp2(00B").mangledNameHash()); + ASSERT_EQ(0x000000ffu, ImmutableString("exp2(10B").mangledNameHash()); + ASSERT_EQ(0x0000014bu, ImmutableString("exp2(20B").mangledNameHash()); + ASSERT_EQ(0x00000260u, ImmutableString("exp2(30B").mangledNameHash()); + ASSERT_EQ(0x0000016au, ImmutableString("log2(00B").mangledNameHash()); ASSERT_EQ(0x0000008bu, ImmutableString("log2(10B").mangledNameHash()); - ASSERT_EQ(0x00000319u, ImmutableString("log2(20B").mangledNameHash()); - ASSERT_EQ(0x000001b7u, ImmutableString("log2(30B").mangledNameHash()); - ASSERT_EQ(0x000001d8u, ImmutableString("sqrt(00B").mangledNameHash()); - ASSERT_EQ(0x000000bau, ImmutableString("sqrt(10B").mangledNameHash()); + ASSERT_EQ(0x0000031fu, ImmutableString("log2(20B").mangledNameHash()); + ASSERT_EQ(0x000001bdu, ImmutableString("log2(30B").mangledNameHash()); + ASSERT_EQ(0x000001deu, ImmutableString("sqrt(00B").mangledNameHash()); + ASSERT_EQ(0x000000bcu, ImmutableString("sqrt(10B").mangledNameHash()); ASSERT_EQ(0x0000007fu, ImmutableString("sqrt(20B").mangledNameHash()); - ASSERT_EQ(0x00000309u, ImmutableString("sqrt(30B").mangledNameHash()); + ASSERT_EQ(0x0000030fu, ImmutableString("sqrt(30B").mangledNameHash()); ASSERT_EQ(0x0000004cu, ImmutableString("inversesqrt(00B").mangledNameHash()); - ASSERT_EQ(0x000002e6u, ImmutableString("inversesqrt(10B").mangledNameHash()); - ASSERT_EQ(0x00000240u, ImmutableString("inversesqrt(20B").mangledNameHash()); - ASSERT_EQ(0x00000172u, ImmutableString("inversesqrt(30B").mangledNameHash()); - ASSERT_EQ(0x00000282u, ImmutableString("abs(00B").mangledNameHash()); - ASSERT_EQ(0x00000168u, ImmutableString("abs(10B").mangledNameHash()); + ASSERT_EQ(0x000002ecu, ImmutableString("inversesqrt(10B").mangledNameHash()); + ASSERT_EQ(0x00000246u, ImmutableString("inversesqrt(20B").mangledNameHash()); + ASSERT_EQ(0x00000177u, ImmutableString("inversesqrt(30B").mangledNameHash()); + ASSERT_EQ(0x00000288u, ImmutableString("abs(00B").mangledNameHash()); + ASSERT_EQ(0x0000016du, ImmutableString("abs(10B").mangledNameHash()); ASSERT_EQ(0x0000004bu, ImmutableString("abs(20B").mangledNameHash()); - ASSERT_EQ(0x000002ecu, ImmutableString("abs(30B").mangledNameHash()); - ASSERT_EQ(0x00000281u, ImmutableString("abs(00D").mangledNameHash()); - ASSERT_EQ(0x00000167u, ImmutableString("abs(10D").mangledNameHash()); + ASSERT_EQ(0x000002f2u, ImmutableString("abs(30B").mangledNameHash()); + ASSERT_EQ(0x00000287u, ImmutableString("abs(00D").mangledNameHash()); + ASSERT_EQ(0x0000016cu, ImmutableString("abs(10D").mangledNameHash()); ASSERT_EQ(0x0000004au, ImmutableString("abs(20D").mangledNameHash()); - ASSERT_EQ(0x000002e9u, ImmutableString("abs(30D").mangledNameHash()); - ASSERT_EQ(0x0000029du, ImmutableString("sign(00B").mangledNameHash()); - ASSERT_EQ(0x0000038eu, ImmutableString("sign(10B").mangledNameHash()); + ASSERT_EQ(0x000002efu, ImmutableString("abs(30D").mangledNameHash()); + ASSERT_EQ(0x000002a3u, ImmutableString("sign(00B").mangledNameHash()); + ASSERT_EQ(0x00000394u, ImmutableString("sign(10B").mangledNameHash()); ASSERT_EQ(0x00000080u, ImmutableString("sign(20B").mangledNameHash()); - ASSERT_EQ(0x0000018fu, ImmutableString("sign(30B").mangledNameHash()); - ASSERT_EQ(0x000002a0u, ImmutableString("sign(00D").mangledNameHash()); - ASSERT_EQ(0x0000030bu, ImmutableString("sign(10D").mangledNameHash()); + ASSERT_EQ(0x00000195u, ImmutableString("sign(30B").mangledNameHash()); + ASSERT_EQ(0x000002a6u, ImmutableString("sign(00D").mangledNameHash()); + ASSERT_EQ(0x00000311u, ImmutableString("sign(10D").mangledNameHash()); ASSERT_EQ(0x00000082u, ImmutableString("sign(20D").mangledNameHash()); - ASSERT_EQ(0x00000190u, ImmutableString("sign(30D").mangledNameHash()); - ASSERT_EQ(0x000003a5u, ImmutableString("floor(00B").mangledNameHash()); - ASSERT_EQ(0x00000204u, ImmutableString("floor(10B").mangledNameHash()); - ASSERT_EQ(0x00000220u, ImmutableString("floor(20B").mangledNameHash()); - ASSERT_EQ(0x00000112u, ImmutableString("floor(30B").mangledNameHash()); - ASSERT_EQ(0x000000edu, ImmutableString("trunc(00B").mangledNameHash()); - ASSERT_EQ(0x0000037cu, ImmutableString("trunc(10B").mangledNameHash()); - ASSERT_EQ(0x00000345u, ImmutableString("trunc(20B").mangledNameHash()); - ASSERT_EQ(0x000001fdu, ImmutableString("trunc(30B").mangledNameHash()); - ASSERT_EQ(0x000000d2u, ImmutableString("round(00B").mangledNameHash()); - ASSERT_EQ(0x00000365u, ImmutableString("round(10B").mangledNameHash()); - ASSERT_EQ(0x00000228u, ImmutableString("round(20B").mangledNameHash()); - ASSERT_EQ(0x0000010eu, ImmutableString("round(30B").mangledNameHash()); - ASSERT_EQ(0x000002cau, ImmutableString("roundEven(00B").mangledNameHash()); - ASSERT_EQ(0x00000195u, ImmutableString("roundEven(10B").mangledNameHash()); - ASSERT_EQ(0x0000013du, ImmutableString("roundEven(20B").mangledNameHash()); + ASSERT_EQ(0x00000196u, ImmutableString("sign(30D").mangledNameHash()); + ASSERT_EQ(0x000003abu, ImmutableString("floor(00B").mangledNameHash()); + ASSERT_EQ(0x0000020au, ImmutableString("floor(10B").mangledNameHash()); + ASSERT_EQ(0x00000226u, ImmutableString("floor(20B").mangledNameHash()); + ASSERT_EQ(0x00000116u, ImmutableString("floor(30B").mangledNameHash()); + ASSERT_EQ(0x000000f0u, ImmutableString("trunc(00B").mangledNameHash()); + ASSERT_EQ(0x00000382u, ImmutableString("trunc(10B").mangledNameHash()); + ASSERT_EQ(0x0000034bu, ImmutableString("trunc(20B").mangledNameHash()); + ASSERT_EQ(0x00000203u, ImmutableString("trunc(30B").mangledNameHash()); + ASSERT_EQ(0x000000d5u, ImmutableString("round(00B").mangledNameHash()); + ASSERT_EQ(0x0000036bu, ImmutableString("round(10B").mangledNameHash()); + ASSERT_EQ(0x0000022eu, ImmutableString("round(20B").mangledNameHash()); + ASSERT_EQ(0x00000112u, ImmutableString("round(30B").mangledNameHash()); + ASSERT_EQ(0x000002d0u, ImmutableString("roundEven(00B").mangledNameHash()); + ASSERT_EQ(0x0000019bu, ImmutableString("roundEven(10B").mangledNameHash()); + ASSERT_EQ(0x00000142u, ImmutableString("roundEven(20B").mangledNameHash()); ASSERT_EQ(0x0000001cu, ImmutableString("roundEven(30B").mangledNameHash()); - ASSERT_EQ(0x00000234u, ImmutableString("ceil(00B").mangledNameHash()); - ASSERT_EQ(0x00000327u, ImmutableString("ceil(10B").mangledNameHash()); + ASSERT_EQ(0x0000023au, ImmutableString("ceil(00B").mangledNameHash()); + ASSERT_EQ(0x0000032du, ImmutableString("ceil(10B").mangledNameHash()); ASSERT_EQ(0x00000099u, ImmutableString("ceil(20B").mangledNameHash()); - ASSERT_EQ(0x0000014eu, ImmutableString("ceil(30B").mangledNameHash()); - ASSERT_EQ(0x00000179u, ImmutableString("fract(00B").mangledNameHash()); + ASSERT_EQ(0x00000153u, ImmutableString("ceil(30B").mangledNameHash()); + ASSERT_EQ(0x0000017eu, ImmutableString("fract(00B").mangledNameHash()); ASSERT_EQ(0x00000062u, ImmutableString("fract(10B").mangledNameHash()); - ASSERT_EQ(0x000002ebu, ImmutableString("fract(20B").mangledNameHash()); - ASSERT_EQ(0x000001bau, ImmutableString("fract(30B").mangledNameHash()); - ASSERT_EQ(0x00000192u, ImmutableString("mod(00B00B").mangledNameHash()); - ASSERT_EQ(0x00000157u, ImmutableString("mod(10B00B").mangledNameHash()); - ASSERT_EQ(0x000000b5u, ImmutableString("mod(20B00B").mangledNameHash()); - ASSERT_EQ(0x000001a3u, ImmutableString("mod(30B00B").mangledNameHash()); - ASSERT_EQ(0x000002acu, ImmutableString("mod(10B10B").mangledNameHash()); - ASSERT_EQ(0x00000209u, ImmutableString("mod(20B20B").mangledNameHash()); - ASSERT_EQ(0x0000018du, ImmutableString("mod(30B30B").mangledNameHash()); - ASSERT_EQ(0x000001d4u, ImmutableString("min(00B00B").mangledNameHash()); - ASSERT_EQ(0x0000031bu, ImmutableString("min(10B00B").mangledNameHash()); - ASSERT_EQ(0x000000afu, ImmutableString("min(20B00B").mangledNameHash()); + ASSERT_EQ(0x000002f1u, ImmutableString("fract(20B").mangledNameHash()); + ASSERT_EQ(0x000001c0u, ImmutableString("fract(30B").mangledNameHash()); + ASSERT_EQ(0x00000198u, ImmutableString("mod(00B00B").mangledNameHash()); + ASSERT_EQ(0x0000015cu, ImmutableString("mod(10B00B").mangledNameHash()); + ASSERT_EQ(0x000000b6u, ImmutableString("mod(20B00B").mangledNameHash()); + ASSERT_EQ(0x000001a9u, ImmutableString("mod(30B00B").mangledNameHash()); + ASSERT_EQ(0x000002b2u, ImmutableString("mod(10B10B").mangledNameHash()); + ASSERT_EQ(0x0000020fu, ImmutableString("mod(20B20B").mangledNameHash()); + ASSERT_EQ(0x00000193u, ImmutableString("mod(30B30B").mangledNameHash()); + ASSERT_EQ(0x000001dau, ImmutableString("min(00B00B").mangledNameHash()); + ASSERT_EQ(0x00000321u, ImmutableString("min(10B00B").mangledNameHash()); + ASSERT_EQ(0x000000b0u, ImmutableString("min(20B00B").mangledNameHash()); ASSERT_EQ(0x00000073u, ImmutableString("min(30B00B").mangledNameHash()); ASSERT_EQ(0x0000008cu, ImmutableString("min(10B10B").mangledNameHash()); - ASSERT_EQ(0x00000212u, ImmutableString("min(20B20B").mangledNameHash()); + ASSERT_EQ(0x00000218u, ImmutableString("min(20B20B").mangledNameHash()); ASSERT_EQ(0x0000005cu, ImmutableString("min(30B30B").mangledNameHash()); - ASSERT_EQ(0x00000342u, ImmutableString("min(00D00D").mangledNameHash()); + ASSERT_EQ(0x00000348u, ImmutableString("min(00D00D").mangledNameHash()); ASSERT_EQ(0x00000045u, ImmutableString("min(10D10D").mangledNameHash()); - ASSERT_EQ(0x00000272u, ImmutableString("min(20D20D").mangledNameHash()); - ASSERT_EQ(0x00000242u, ImmutableString("min(30D30D").mangledNameHash()); - ASSERT_EQ(0x000002c5u, ImmutableString("min(10D00D").mangledNameHash()); + ASSERT_EQ(0x00000278u, ImmutableString("min(20D20D").mangledNameHash()); + ASSERT_EQ(0x00000248u, ImmutableString("min(30D30D").mangledNameHash()); + ASSERT_EQ(0x000002cbu, ImmutableString("min(10D00D").mangledNameHash()); ASSERT_EQ(0x00000039u, ImmutableString("min(20D00D").mangledNameHash()); - ASSERT_EQ(0x0000038cu, ImmutableString("min(30D00D").mangledNameHash()); - ASSERT_EQ(0x0000030eu, ImmutableString("min(00E00E").mangledNameHash()); - ASSERT_EQ(0x0000035eu, ImmutableString("min(10E10E").mangledNameHash()); + ASSERT_EQ(0x00000392u, ImmutableString("min(30D00D").mangledNameHash()); + ASSERT_EQ(0x00000314u, ImmutableString("min(00E00E").mangledNameHash()); + ASSERT_EQ(0x00000364u, ImmutableString("min(10E10E").mangledNameHash()); ASSERT_EQ(0x00000017u, ImmutableString("min(20E20E").mangledNameHash()); - ASSERT_EQ(0x000001d0u, ImmutableString("min(30E30E").mangledNameHash()); - ASSERT_EQ(0x000000cdu, ImmutableString("min(10E00E").mangledNameHash()); - ASSERT_EQ(0x000001deu, ImmutableString("min(20E00E").mangledNameHash()); - ASSERT_EQ(0x0000017bu, ImmutableString("min(30E00E").mangledNameHash()); - ASSERT_EQ(0x0000013cu, ImmutableString("max(00B00B").mangledNameHash()); - ASSERT_EQ(0x00000253u, ImmutableString("max(10B00B").mangledNameHash()); + ASSERT_EQ(0x000001d6u, ImmutableString("min(30E30E").mangledNameHash()); + ASSERT_EQ(0x000000d0u, ImmutableString("min(10E00E").mangledNameHash()); + ASSERT_EQ(0x000001e4u, ImmutableString("min(20E00E").mangledNameHash()); + ASSERT_EQ(0x00000180u, ImmutableString("min(30E00E").mangledNameHash()); + ASSERT_EQ(0x00000141u, ImmutableString("max(00B00B").mangledNameHash()); + ASSERT_EQ(0x00000259u, ImmutableString("max(10B00B").mangledNameHash()); ASSERT_EQ(0x00000032u, ImmutableString("max(20B00B").mangledNameHash()); - ASSERT_EQ(0x00000271u, ImmutableString("max(30B00B").mangledNameHash()); - ASSERT_EQ(0x00000374u, ImmutableString("max(10B10B").mangledNameHash()); - ASSERT_EQ(0x00000292u, ImmutableString("max(20B20B").mangledNameHash()); - ASSERT_EQ(0x0000011eu, ImmutableString("max(30B30B").mangledNameHash()); - ASSERT_EQ(0x0000014cu, ImmutableString("max(00D00D").mangledNameHash()); - ASSERT_EQ(0x00000216u, ImmutableString("max(10D10D").mangledNameHash()); - ASSERT_EQ(0x00000214u, ImmutableString("max(20D20D").mangledNameHash()); - ASSERT_EQ(0x0000030fu, ImmutableString("max(30D30D").mangledNameHash()); - ASSERT_EQ(0x0000010cu, ImmutableString("max(10D00D").mangledNameHash()); - ASSERT_EQ(0x000000beu, ImmutableString("max(20D00D").mangledNameHash()); + ASSERT_EQ(0x00000277u, ImmutableString("max(30B00B").mangledNameHash()); + ASSERT_EQ(0x0000037au, ImmutableString("max(10B10B").mangledNameHash()); + ASSERT_EQ(0x00000298u, ImmutableString("max(20B20B").mangledNameHash()); + ASSERT_EQ(0x00000122u, ImmutableString("max(30B30B").mangledNameHash()); + ASSERT_EQ(0x00000151u, ImmutableString("max(00D00D").mangledNameHash()); + ASSERT_EQ(0x0000021cu, ImmutableString("max(10D10D").mangledNameHash()); + ASSERT_EQ(0x0000021au, ImmutableString("max(20D20D").mangledNameHash()); + ASSERT_EQ(0x00000315u, ImmutableString("max(30D30D").mangledNameHash()); + ASSERT_EQ(0x00000110u, ImmutableString("max(10D00D").mangledNameHash()); + ASSERT_EQ(0x000000c1u, ImmutableString("max(20D00D").mangledNameHash()); ASSERT_EQ(0x00000054u, ImmutableString("max(30D00D").mangledNameHash()); - ASSERT_EQ(0x0000038fu, ImmutableString("max(00E00E").mangledNameHash()); - ASSERT_EQ(0x0000011du, ImmutableString("max(10E10E").mangledNameHash()); - ASSERT_EQ(0x0000015eu, ImmutableString("max(20E20E").mangledNameHash()); - ASSERT_EQ(0x000001c7u, ImmutableString("max(30E30E").mangledNameHash()); - ASSERT_EQ(0x000001edu, ImmutableString("max(10E00E").mangledNameHash()); - ASSERT_EQ(0x000002c8u, ImmutableString("max(20E00E").mangledNameHash()); - ASSERT_EQ(0x00000145u, ImmutableString("max(30E00E").mangledNameHash()); - ASSERT_EQ(0x00000175u, ImmutableString("clamp(00B00B00B").mangledNameHash()); - ASSERT_EQ(0x00000385u, ImmutableString("clamp(10B00B00B").mangledNameHash()); - ASSERT_EQ(0x0000027du, ImmutableString("clamp(20B00B00B").mangledNameHash()); - ASSERT_EQ(0x00000102u, ImmutableString("clamp(30B00B00B").mangledNameHash()); + ASSERT_EQ(0x00000395u, ImmutableString("max(00E00E").mangledNameHash()); + ASSERT_EQ(0x00000121u, ImmutableString("max(10E10E").mangledNameHash()); + ASSERT_EQ(0x00000163u, ImmutableString("max(20E20E").mangledNameHash()); + ASSERT_EQ(0x000001cdu, ImmutableString("max(30E30E").mangledNameHash()); + ASSERT_EQ(0x000001f3u, ImmutableString("max(10E00E").mangledNameHash()); + ASSERT_EQ(0x000002ceu, ImmutableString("max(20E00E").mangledNameHash()); + ASSERT_EQ(0x0000014au, ImmutableString("max(30E00E").mangledNameHash()); + ASSERT_EQ(0x0000017au, ImmutableString("clamp(00B00B00B").mangledNameHash()); + ASSERT_EQ(0x0000038bu, ImmutableString("clamp(10B00B00B").mangledNameHash()); + ASSERT_EQ(0x00000283u, ImmutableString("clamp(20B00B00B").mangledNameHash()); + ASSERT_EQ(0x00000106u, ImmutableString("clamp(30B00B00B").mangledNameHash()); ASSERT_EQ(0x00000020u, ImmutableString("clamp(10B10B10B").mangledNameHash()); - ASSERT_EQ(0x0000033cu, ImmutableString("clamp(20B20B20B").mangledNameHash()); + ASSERT_EQ(0x00000342u, ImmutableString("clamp(20B20B20B").mangledNameHash()); ASSERT_EQ(0x00000033u, ImmutableString("clamp(30B30B30B").mangledNameHash()); - ASSERT_EQ(0x00000110u, ImmutableString("clamp(00D00D00D").mangledNameHash()); + ASSERT_EQ(0x00000114u, ImmutableString("clamp(00D00D00D").mangledNameHash()); ASSERT_EQ(0x00000002u, ImmutableString("clamp(10D00D00D").mangledNameHash()); - ASSERT_EQ(0x000002cfu, ImmutableString("clamp(20D00D00D").mangledNameHash()); - ASSERT_EQ(0x00000384u, ImmutableString("clamp(30D00D00D").mangledNameHash()); + ASSERT_EQ(0x000002d5u, ImmutableString("clamp(20D00D00D").mangledNameHash()); + ASSERT_EQ(0x0000038au, ImmutableString("clamp(30D00D00D").mangledNameHash()); ASSERT_EQ(0x0000009bu, ImmutableString("clamp(10D10D10D").mangledNameHash()); - ASSERT_EQ(0x000001eau, ImmutableString("clamp(20D20D20D").mangledNameHash()); - ASSERT_EQ(0x000002f3u, ImmutableString("clamp(30D30D30D").mangledNameHash()); + ASSERT_EQ(0x000001f0u, ImmutableString("clamp(20D20D20D").mangledNameHash()); + ASSERT_EQ(0x000002f9u, ImmutableString("clamp(30D30D30D").mangledNameHash()); ASSERT_EQ(0x00000011u, ImmutableString("clamp(00E00E00E").mangledNameHash()); - ASSERT_EQ(0x000002ceu, ImmutableString("clamp(10E00E00E").mangledNameHash()); - ASSERT_EQ(0x000002fau, ImmutableString("clamp(20E00E00E").mangledNameHash()); - ASSERT_EQ(0x00000232u, ImmutableString("clamp(30E00E00E").mangledNameHash()); - ASSERT_EQ(0x0000011fu, ImmutableString("clamp(10E10E10E").mangledNameHash()); - ASSERT_EQ(0x000000bcu, ImmutableString("clamp(20E20E20E").mangledNameHash()); + ASSERT_EQ(0x000002d4u, ImmutableString("clamp(10E00E00E").mangledNameHash()); + ASSERT_EQ(0x00000300u, ImmutableString("clamp(20E00E00E").mangledNameHash()); + ASSERT_EQ(0x00000238u, ImmutableString("clamp(30E00E00E").mangledNameHash()); + ASSERT_EQ(0x00000123u, ImmutableString("clamp(10E10E10E").mangledNameHash()); + ASSERT_EQ(0x000000bfu, ImmutableString("clamp(20E20E20E").mangledNameHash()); ASSERT_EQ(0x000000a4u, ImmutableString("clamp(30E30E30E").mangledNameHash()); - ASSERT_EQ(0x00000222u, ImmutableString("mix(00B00B00B").mangledNameHash()); - ASSERT_EQ(0x000002f1u, ImmutableString("mix(10B10B00B").mangledNameHash()); + ASSERT_EQ(0x00000228u, ImmutableString("mix(00B00B00B").mangledNameHash()); + ASSERT_EQ(0x000002f7u, ImmutableString("mix(10B10B00B").mangledNameHash()); ASSERT_EQ(0x0000001fu, ImmutableString("mix(20B20B00B").mangledNameHash()); - ASSERT_EQ(0x0000031cu, ImmutableString("mix(30B30B00B").mangledNameHash()); - ASSERT_EQ(0x000001b3u, ImmutableString("mix(10B10B10B").mangledNameHash()); - ASSERT_EQ(0x00000251u, ImmutableString("mix(20B20B20B").mangledNameHash()); - ASSERT_EQ(0x00000359u, ImmutableString("mix(30B30B30B").mangledNameHash()); + ASSERT_EQ(0x00000322u, ImmutableString("mix(30B30B00B").mangledNameHash()); + ASSERT_EQ(0x000001b9u, ImmutableString("mix(10B10B10B").mangledNameHash()); + ASSERT_EQ(0x00000257u, ImmutableString("mix(20B20B20B").mangledNameHash()); + ASSERT_EQ(0x0000035fu, ImmutableString("mix(30B30B30B").mangledNameHash()); ASSERT_EQ(0x00000056u, ImmutableString("mix(00B00B00F").mangledNameHash()); - ASSERT_EQ(0x000001b2u, ImmutableString("mix(10B10B10F").mangledNameHash()); - ASSERT_EQ(0x0000024eu, ImmutableString("mix(20B20B20F").mangledNameHash()); - ASSERT_EQ(0x000002fdu, ImmutableString("mix(30B30B30F").mangledNameHash()); - ASSERT_EQ(0x0000019bu, ImmutableString("step(00B00B").mangledNameHash()); - ASSERT_EQ(0x00000273u, ImmutableString("step(10B10B").mangledNameHash()); - ASSERT_EQ(0x00000284u, ImmutableString("step(20B20B").mangledNameHash()); - ASSERT_EQ(0x00000275u, ImmutableString("step(30B30B").mangledNameHash()); + ASSERT_EQ(0x000001b8u, ImmutableString("mix(10B10B10F").mangledNameHash()); + ASSERT_EQ(0x00000254u, ImmutableString("mix(20B20B20F").mangledNameHash()); + ASSERT_EQ(0x00000303u, ImmutableString("mix(30B30B30F").mangledNameHash()); + ASSERT_EQ(0x000001a1u, ImmutableString("step(00B00B").mangledNameHash()); + ASSERT_EQ(0x00000279u, ImmutableString("step(10B10B").mangledNameHash()); + ASSERT_EQ(0x0000028au, ImmutableString("step(20B20B").mangledNameHash()); + ASSERT_EQ(0x0000027bu, ImmutableString("step(30B30B").mangledNameHash()); ASSERT_EQ(0x0000007au, ImmutableString("step(00B10B").mangledNameHash()); ASSERT_EQ(0x00000024u, ImmutableString("step(00B20B").mangledNameHash()); - ASSERT_EQ(0x0000029au, ImmutableString("step(00B30B").mangledNameHash()); - ASSERT_EQ(0x00000334u, ImmutableString("smoothstep(00B00B00B").mangledNameHash()); - ASSERT_EQ(0x0000021bu, ImmutableString("smoothstep(10B10B10B").mangledNameHash()); - ASSERT_EQ(0x00000392u, ImmutableString("smoothstep(20B20B20B").mangledNameHash()); - ASSERT_EQ(0x0000033au, ImmutableString("smoothstep(30B30B30B").mangledNameHash()); - ASSERT_EQ(0x000001eeu, ImmutableString("smoothstep(00B00B10B").mangledNameHash()); - ASSERT_EQ(0x000000d3u, ImmutableString("smoothstep(00B00B20B").mangledNameHash()); - ASSERT_EQ(0x00000316u, ImmutableString("smoothstep(00B00B30B").mangledNameHash()); + ASSERT_EQ(0x000002a0u, ImmutableString("step(00B30B").mangledNameHash()); + ASSERT_EQ(0x0000033au, ImmutableString("smoothstep(00B00B00B").mangledNameHash()); + ASSERT_EQ(0x00000221u, ImmutableString("smoothstep(10B10B10B").mangledNameHash()); + ASSERT_EQ(0x00000398u, ImmutableString("smoothstep(20B20B20B").mangledNameHash()); + ASSERT_EQ(0x00000340u, ImmutableString("smoothstep(30B30B30B").mangledNameHash()); + ASSERT_EQ(0x000001f4u, ImmutableString("smoothstep(00B00B10B").mangledNameHash()); + ASSERT_EQ(0x000000d6u, ImmutableString("smoothstep(00B00B20B").mangledNameHash()); + ASSERT_EQ(0x0000031cu, ImmutableString("smoothstep(00B00B30B").mangledNameHash()); ASSERT_EQ(0x00000005u, ImmutableString("modf(00B00B").mangledNameHash()); ASSERT_EQ(0x00000072u, ImmutableString("modf(10B10B").mangledNameHash()); - ASSERT_EQ(0x0000023bu, ImmutableString("modf(20B20B").mangledNameHash()); - ASSERT_EQ(0x0000013au, ImmutableString("modf(30B30B").mangledNameHash()); - ASSERT_EQ(0x0000022eu, ImmutableString("isnan(00B").mangledNameHash()); - ASSERT_EQ(0x00000372u, ImmutableString("isnan(10B").mangledNameHash()); - ASSERT_EQ(0x0000013bu, ImmutableString("isnan(20B").mangledNameHash()); - ASSERT_EQ(0x000001c8u, ImmutableString("isnan(30B").mangledNameHash()); - ASSERT_EQ(0x0000019eu, ImmutableString("isinf(00B").mangledNameHash()); - ASSERT_EQ(0x000002d1u, ImmutableString("isinf(10B").mangledNameHash()); - ASSERT_EQ(0x00000357u, ImmutableString("isinf(20B").mangledNameHash()); - ASSERT_EQ(0x000000c3u, ImmutableString("isinf(30B").mangledNameHash()); - ASSERT_EQ(0x0000038du, ImmutableString("floatBitsToInt(00B").mangledNameHash()); - ASSERT_EQ(0x00000252u, ImmutableString("floatBitsToInt(10B").mangledNameHash()); - ASSERT_EQ(0x00000317u, ImmutableString("floatBitsToInt(20B").mangledNameHash()); - ASSERT_EQ(0x00000142u, ImmutableString("floatBitsToInt(30B").mangledNameHash()); - ASSERT_EQ(0x00000397u, ImmutableString("floatBitsToUint(00B").mangledNameHash()); - ASSERT_EQ(0x000000b8u, ImmutableString("floatBitsToUint(10B").mangledNameHash()); + ASSERT_EQ(0x00000241u, ImmutableString("modf(20B20B").mangledNameHash()); + ASSERT_EQ(0x0000013fu, ImmutableString("modf(30B30B").mangledNameHash()); + ASSERT_EQ(0x00000234u, ImmutableString("isnan(00B").mangledNameHash()); + ASSERT_EQ(0x00000378u, ImmutableString("isnan(10B").mangledNameHash()); + ASSERT_EQ(0x00000140u, ImmutableString("isnan(20B").mangledNameHash()); + ASSERT_EQ(0x000001ceu, ImmutableString("isnan(30B").mangledNameHash()); + ASSERT_EQ(0x000001a4u, ImmutableString("isinf(00B").mangledNameHash()); + ASSERT_EQ(0x000002d7u, ImmutableString("isinf(10B").mangledNameHash()); + ASSERT_EQ(0x0000035du, ImmutableString("isinf(20B").mangledNameHash()); + ASSERT_EQ(0x000000c6u, ImmutableString("isinf(30B").mangledNameHash()); + ASSERT_EQ(0x00000393u, ImmutableString("floatBitsToInt(00B").mangledNameHash()); + ASSERT_EQ(0x00000258u, ImmutableString("floatBitsToInt(10B").mangledNameHash()); + ASSERT_EQ(0x0000031du, ImmutableString("floatBitsToInt(20B").mangledNameHash()); + ASSERT_EQ(0x00000147u, ImmutableString("floatBitsToInt(30B").mangledNameHash()); + ASSERT_EQ(0x0000039du, ImmutableString("floatBitsToUint(00B").mangledNameHash()); + ASSERT_EQ(0x000000b9u, ImmutableString("floatBitsToUint(10B").mangledNameHash()); ASSERT_EQ(0x00000041u, ImmutableString("floatBitsToUint(20B").mangledNameHash()); - ASSERT_EQ(0x0000025fu, ImmutableString("floatBitsToUint(30B").mangledNameHash()); + ASSERT_EQ(0x00000265u, ImmutableString("floatBitsToUint(30B").mangledNameHash()); ASSERT_EQ(0x00000064u, ImmutableString("intBitsToFloat(00D").mangledNameHash()); - ASSERT_EQ(0x000001abu, ImmutableString("intBitsToFloat(10D").mangledNameHash()); - ASSERT_EQ(0x00000178u, ImmutableString("intBitsToFloat(20D").mangledNameHash()); + ASSERT_EQ(0x000001b1u, ImmutableString("intBitsToFloat(10D").mangledNameHash()); + ASSERT_EQ(0x0000017du, ImmutableString("intBitsToFloat(20D").mangledNameHash()); ASSERT_EQ(0x00000059u, ImmutableString("intBitsToFloat(30D").mangledNameHash()); ASSERT_EQ(0x0000003bu, ImmutableString("uintBitsToFloat(00E").mangledNameHash()); - ASSERT_EQ(0x00000158u, ImmutableString("uintBitsToFloat(10E").mangledNameHash()); - ASSERT_EQ(0x000002a8u, ImmutableString("uintBitsToFloat(20E").mangledNameHash()); + ASSERT_EQ(0x0000015du, ImmutableString("uintBitsToFloat(10E").mangledNameHash()); + ASSERT_EQ(0x000002aeu, ImmutableString("uintBitsToFloat(20E").mangledNameHash()); ASSERT_EQ(0x00000026u, ImmutableString("uintBitsToFloat(30E").mangledNameHash()); ASSERT_EQ(0x00000094u, ImmutableString("frexp(00B00D").mangledNameHash()); - ASSERT_EQ(0x000001ecu, ImmutableString("frexp(10B10D").mangledNameHash()); - ASSERT_EQ(0x00000177u, ImmutableString("frexp(20B20D").mangledNameHash()); - ASSERT_EQ(0x000001ceu, ImmutableString("frexp(30B30D").mangledNameHash()); + ASSERT_EQ(0x000001f2u, ImmutableString("frexp(10B10D").mangledNameHash()); + ASSERT_EQ(0x0000017cu, ImmutableString("frexp(20B20D").mangledNameHash()); + ASSERT_EQ(0x000001d4u, ImmutableString("frexp(30B30D").mangledNameHash()); ASSERT_EQ(0x00000013u, ImmutableString("ldexp(00B00D").mangledNameHash()); - ASSERT_EQ(0x0000031au, ImmutableString("ldexp(10B10D").mangledNameHash()); - ASSERT_EQ(0x00000352u, ImmutableString("ldexp(20B20D").mangledNameHash()); - ASSERT_EQ(0x00000270u, ImmutableString("ldexp(30B30D").mangledNameHash()); - ASSERT_EQ(0x0000025eu, ImmutableString("packSnorm2x16(10B").mangledNameHash()); - ASSERT_EQ(0x000002d6u, ImmutableString("packHalf2x16(10B").mangledNameHash()); - ASSERT_EQ(0x000001f3u, ImmutableString("unpackSnorm2x16(00E").mangledNameHash()); - ASSERT_EQ(0x00000105u, ImmutableString("unpackHalf2x16(00E").mangledNameHash()); - ASSERT_EQ(0x000002b1u, ImmutableString("packUnorm2x16(10B").mangledNameHash()); + ASSERT_EQ(0x00000320u, ImmutableString("ldexp(10B10D").mangledNameHash()); + ASSERT_EQ(0x00000358u, ImmutableString("ldexp(20B20D").mangledNameHash()); + ASSERT_EQ(0x00000276u, ImmutableString("ldexp(30B30D").mangledNameHash()); + ASSERT_EQ(0x00000264u, ImmutableString("packSnorm2x16(10B").mangledNameHash()); + ASSERT_EQ(0x000002dcu, ImmutableString("packHalf2x16(10B").mangledNameHash()); + ASSERT_EQ(0x000001f9u, ImmutableString("unpackSnorm2x16(00E").mangledNameHash()); + ASSERT_EQ(0x00000109u, ImmutableString("unpackHalf2x16(00E").mangledNameHash()); + ASSERT_EQ(0x000002b7u, ImmutableString("packUnorm2x16(10B").mangledNameHash()); ASSERT_EQ(0x0000007du, ImmutableString("unpackUnorm2x16(00E").mangledNameHash()); ASSERT_EQ(0x00000092u, ImmutableString("packUnorm4x8(30B").mangledNameHash()); - ASSERT_EQ(0x000002f0u, ImmutableString("packSnorm4x8(30B").mangledNameHash()); - ASSERT_EQ(0x000002a9u, ImmutableString("unpackUnorm4x8(00E").mangledNameHash()); - ASSERT_EQ(0x00000134u, ImmutableString("unpackSnorm4x8(00E").mangledNameHash()); - ASSERT_EQ(0x000001ffu, ImmutableString("length(00B").mangledNameHash()); - ASSERT_EQ(0x000000efu, ImmutableString("length(10B").mangledNameHash()); - ASSERT_EQ(0x00000380u, ImmutableString("length(20B").mangledNameHash()); - ASSERT_EQ(0x0000024au, ImmutableString("length(30B").mangledNameHash()); - ASSERT_EQ(0x00000236u, ImmutableString("distance(00B00B").mangledNameHash()); - ASSERT_EQ(0x00000155u, ImmutableString("distance(10B10B").mangledNameHash()); - ASSERT_EQ(0x000001a0u, ImmutableString("distance(20B20B").mangledNameHash()); - ASSERT_EQ(0x000000e9u, ImmutableString("distance(30B30B").mangledNameHash()); - ASSERT_EQ(0x000000f2u, ImmutableString("dot(00B00B").mangledNameHash()); - ASSERT_EQ(0x00000104u, ImmutableString("dot(10B10B").mangledNameHash()); - ASSERT_EQ(0x0000032du, ImmutableString("dot(20B20B").mangledNameHash()); - ASSERT_EQ(0x000000f4u, ImmutableString("dot(30B30B").mangledNameHash()); - ASSERT_EQ(0x0000027bu, ImmutableString("cross(20B20B").mangledNameHash()); + ASSERT_EQ(0x000002f6u, ImmutableString("packSnorm4x8(30B").mangledNameHash()); + ASSERT_EQ(0x000002afu, ImmutableString("unpackUnorm4x8(00E").mangledNameHash()); + ASSERT_EQ(0x00000139u, ImmutableString("unpackSnorm4x8(00E").mangledNameHash()); + ASSERT_EQ(0x00000205u, ImmutableString("length(00B").mangledNameHash()); + ASSERT_EQ(0x000000f2u, ImmutableString("length(10B").mangledNameHash()); + ASSERT_EQ(0x00000386u, ImmutableString("length(20B").mangledNameHash()); + ASSERT_EQ(0x00000250u, ImmutableString("length(30B").mangledNameHash()); + ASSERT_EQ(0x0000023cu, ImmutableString("distance(00B00B").mangledNameHash()); + ASSERT_EQ(0x0000015au, ImmutableString("distance(10B10B").mangledNameHash()); + ASSERT_EQ(0x000001a6u, ImmutableString("distance(20B20B").mangledNameHash()); + ASSERT_EQ(0x000000ecu, ImmutableString("distance(30B30B").mangledNameHash()); + ASSERT_EQ(0x000000f6u, ImmutableString("dot(00B00B").mangledNameHash()); + ASSERT_EQ(0x00000108u, ImmutableString("dot(10B10B").mangledNameHash()); + ASSERT_EQ(0x00000333u, ImmutableString("dot(20B20B").mangledNameHash()); + ASSERT_EQ(0x000000f8u, ImmutableString("dot(30B30B").mangledNameHash()); + ASSERT_EQ(0x00000281u, ImmutableString("cross(20B20B").mangledNameHash()); ASSERT_EQ(0x000000a8u, ImmutableString("normalize(00B").mangledNameHash()); - ASSERT_EQ(0x000001f2u, ImmutableString("normalize(10B").mangledNameHash()); - ASSERT_EQ(0x000001d9u, ImmutableString("normalize(20B").mangledNameHash()); - ASSERT_EQ(0x00000339u, ImmutableString("normalize(30B").mangledNameHash()); - ASSERT_EQ(0x000002b2u, ImmutableString("faceforward(00B00B00B").mangledNameHash()); - ASSERT_EQ(0x000002bdu, ImmutableString("faceforward(10B10B10B").mangledNameHash()); - ASSERT_EQ(0x00000288u, ImmutableString("faceforward(20B20B20B").mangledNameHash()); - ASSERT_EQ(0x00000230u, ImmutableString("faceforward(30B30B30B").mangledNameHash()); - ASSERT_EQ(0x000000b4u, ImmutableString("reflect(00B00B").mangledNameHash()); - ASSERT_EQ(0x000000b7u, ImmutableString("reflect(10B10B").mangledNameHash()); - ASSERT_EQ(0x00000156u, ImmutableString("reflect(20B20B").mangledNameHash()); - ASSERT_EQ(0x00000184u, ImmutableString("reflect(30B30B").mangledNameHash()); - ASSERT_EQ(0x000001afu, ImmutableString("refract(00B00B00B").mangledNameHash()); - ASSERT_EQ(0x000000dbu, ImmutableString("refract(10B10B00B").mangledNameHash()); - ASSERT_EQ(0x000001adu, ImmutableString("refract(20B20B00B").mangledNameHash()); - ASSERT_EQ(0x0000021eu, ImmutableString("refract(30B30B00B").mangledNameHash()); - ASSERT_EQ(0x00000369u, ImmutableString("matrixCompMult(50B50B").mangledNameHash()); - ASSERT_EQ(0x00000106u, ImmutableString("matrixCompMult(A0BA0B").mangledNameHash()); - ASSERT_EQ(0x00000280u, ImmutableString("matrixCompMult(F0BF0B").mangledNameHash()); - ASSERT_EQ(0x00000229u, ImmutableString("matrixCompMult(90B90B").mangledNameHash()); - ASSERT_EQ(0x000001f0u, ImmutableString("matrixCompMult(60B60B").mangledNameHash()); + ASSERT_EQ(0x000001f8u, ImmutableString("normalize(10B").mangledNameHash()); + ASSERT_EQ(0x000001dfu, ImmutableString("normalize(20B").mangledNameHash()); + ASSERT_EQ(0x0000033fu, ImmutableString("normalize(30B").mangledNameHash()); + ASSERT_EQ(0x000002b8u, ImmutableString("faceforward(00B00B00B").mangledNameHash()); + ASSERT_EQ(0x000002c3u, ImmutableString("faceforward(10B10B10B").mangledNameHash()); + ASSERT_EQ(0x0000028eu, ImmutableString("faceforward(20B20B20B").mangledNameHash()); + ASSERT_EQ(0x00000236u, ImmutableString("faceforward(30B30B30B").mangledNameHash()); + ASSERT_EQ(0x000000b5u, ImmutableString("reflect(00B00B").mangledNameHash()); + ASSERT_EQ(0x000000b8u, ImmutableString("reflect(10B10B").mangledNameHash()); + ASSERT_EQ(0x0000015bu, ImmutableString("reflect(20B20B").mangledNameHash()); + ASSERT_EQ(0x0000018au, ImmutableString("reflect(30B30B").mangledNameHash()); + ASSERT_EQ(0x000001b5u, ImmutableString("refract(00B00B00B").mangledNameHash()); + ASSERT_EQ(0x000000deu, ImmutableString("refract(10B10B00B").mangledNameHash()); + ASSERT_EQ(0x000001b3u, ImmutableString("refract(20B20B00B").mangledNameHash()); + ASSERT_EQ(0x00000224u, ImmutableString("refract(30B30B00B").mangledNameHash()); + ASSERT_EQ(0x0000036fu, ImmutableString("matrixCompMult(50B50B").mangledNameHash()); + ASSERT_EQ(0x0000010au, ImmutableString("matrixCompMult(A0BA0B").mangledNameHash()); + ASSERT_EQ(0x00000286u, ImmutableString("matrixCompMult(F0BF0B").mangledNameHash()); + ASSERT_EQ(0x0000022fu, ImmutableString("matrixCompMult(90B90B").mangledNameHash()); + ASSERT_EQ(0x000001f6u, ImmutableString("matrixCompMult(60B60B").mangledNameHash()); ASSERT_EQ(0x0000004du, ImmutableString("matrixCompMult(D0BD0B").mangledNameHash()); - ASSERT_EQ(0x0000015fu, ImmutableString("matrixCompMult(70B70B").mangledNameHash()); - ASSERT_EQ(0x000001feu, ImmutableString("matrixCompMult(E0BE0B").mangledNameHash()); - ASSERT_EQ(0x00000279u, ImmutableString("matrixCompMult(B0BB0B").mangledNameHash()); - ASSERT_EQ(0x00000343u, ImmutableString("outerProduct(10B10B").mangledNameHash()); - ASSERT_EQ(0x00000132u, ImmutableString("outerProduct(20B20B").mangledNameHash()); - ASSERT_EQ(0x00000294u, ImmutableString("outerProduct(30B30B").mangledNameHash()); - ASSERT_EQ(0x00000188u, ImmutableString("outerProduct(20B10B").mangledNameHash()); - ASSERT_EQ(0x000000feu, ImmutableString("outerProduct(10B20B").mangledNameHash()); - ASSERT_EQ(0x00000141u, ImmutableString("outerProduct(30B10B").mangledNameHash()); - ASSERT_EQ(0x0000020du, ImmutableString("outerProduct(10B30B").mangledNameHash()); - ASSERT_EQ(0x00000185u, ImmutableString("outerProduct(30B20B").mangledNameHash()); + ASSERT_EQ(0x00000164u, ImmutableString("matrixCompMult(70B70B").mangledNameHash()); + ASSERT_EQ(0x00000204u, ImmutableString("matrixCompMult(E0BE0B").mangledNameHash()); + ASSERT_EQ(0x0000027fu, ImmutableString("matrixCompMult(B0BB0B").mangledNameHash()); + ASSERT_EQ(0x00000349u, ImmutableString("outerProduct(10B10B").mangledNameHash()); + ASSERT_EQ(0x00000136u, ImmutableString("outerProduct(20B20B").mangledNameHash()); + ASSERT_EQ(0x0000029au, ImmutableString("outerProduct(30B30B").mangledNameHash()); + ASSERT_EQ(0x0000018eu, ImmutableString("outerProduct(20B10B").mangledNameHash()); + ASSERT_EQ(0x00000102u, ImmutableString("outerProduct(10B20B").mangledNameHash()); + ASSERT_EQ(0x00000146u, ImmutableString("outerProduct(30B10B").mangledNameHash()); + ASSERT_EQ(0x00000213u, ImmutableString("outerProduct(10B30B").mangledNameHash()); + ASSERT_EQ(0x0000018bu, ImmutableString("outerProduct(30B20B").mangledNameHash()); ASSERT_EQ(0x00000019u, ImmutableString("outerProduct(20B30B").mangledNameHash()); ASSERT_EQ(0x00000012u, ImmutableString("transpose(50B").mangledNameHash()); - ASSERT_EQ(0x000002ffu, ImmutableString("transpose(A0B").mangledNameHash()); + ASSERT_EQ(0x00000305u, ImmutableString("transpose(A0B").mangledNameHash()); ASSERT_EQ(0x0000009eu, ImmutableString("transpose(F0B").mangledNameHash()); - ASSERT_EQ(0x000002a2u, ImmutableString("transpose(60B").mangledNameHash()); - ASSERT_EQ(0x0000032eu, ImmutableString("transpose(90B").mangledNameHash()); + ASSERT_EQ(0x000002a8u, ImmutableString("transpose(60B").mangledNameHash()); + ASSERT_EQ(0x00000334u, ImmutableString("transpose(90B").mangledNameHash()); ASSERT_EQ(0x0000002au, ImmutableString("transpose(70B").mangledNameHash()); - ASSERT_EQ(0x000001b6u, ImmutableString("transpose(D0B").mangledNameHash()); - ASSERT_EQ(0x00000313u, ImmutableString("transpose(B0B").mangledNameHash()); - ASSERT_EQ(0x0000027au, ImmutableString("transpose(E0B").mangledNameHash()); + ASSERT_EQ(0x000001bcu, ImmutableString("transpose(D0B").mangledNameHash()); + ASSERT_EQ(0x00000319u, ImmutableString("transpose(B0B").mangledNameHash()); + ASSERT_EQ(0x00000280u, ImmutableString("transpose(E0B").mangledNameHash()); ASSERT_EQ(0x00000074u, ImmutableString("determinant(50B").mangledNameHash()); ASSERT_EQ(0x0000000bu, ImmutableString("determinant(A0B").mangledNameHash()); - ASSERT_EQ(0x000002feu, ImmutableString("determinant(F0B").mangledNameHash()); - ASSERT_EQ(0x00000103u, ImmutableString("inverse(50B").mangledNameHash()); - ASSERT_EQ(0x000001c4u, ImmutableString("inverse(A0B").mangledNameHash()); - ASSERT_EQ(0x000001ddu, ImmutableString("inverse(F0B").mangledNameHash()); - ASSERT_EQ(0x000002edu, ImmutableString("lessThan(10B10B").mangledNameHash()); + ASSERT_EQ(0x00000304u, ImmutableString("determinant(F0B").mangledNameHash()); + ASSERT_EQ(0x00000107u, ImmutableString("inverse(50B").mangledNameHash()); + ASSERT_EQ(0x000001cau, ImmutableString("inverse(A0B").mangledNameHash()); + ASSERT_EQ(0x000001e3u, ImmutableString("inverse(F0B").mangledNameHash()); + ASSERT_EQ(0x000002f3u, ImmutableString("lessThan(10B10B").mangledNameHash()); ASSERT_EQ(0x00000075u, ImmutableString("lessThan(20B20B").mangledNameHash()); - ASSERT_EQ(0x000000c5u, ImmutableString("lessThan(30B30B").mangledNameHash()); - ASSERT_EQ(0x00000126u, ImmutableString("lessThan(10D10D").mangledNameHash()); - ASSERT_EQ(0x000000b6u, ImmutableString("lessThan(20D20D").mangledNameHash()); - ASSERT_EQ(0x000001f5u, ImmutableString("lessThan(30D30D").mangledNameHash()); + ASSERT_EQ(0x000000c8u, ImmutableString("lessThan(30B30B").mangledNameHash()); + ASSERT_EQ(0x0000012au, ImmutableString("lessThan(10D10D").mangledNameHash()); + ASSERT_EQ(0x000000b7u, ImmutableString("lessThan(20D20D").mangledNameHash()); + ASSERT_EQ(0x000001fbu, ImmutableString("lessThan(30D30D").mangledNameHash()); ASSERT_EQ(0x00000098u, ImmutableString("lessThan(10E10E").mangledNameHash()); ASSERT_EQ(0x00000063u, ImmutableString("lessThan(20E20E").mangledNameHash()); ASSERT_EQ(0x00000025u, ImmutableString("lessThan(30E30E").mangledNameHash()); ASSERT_EQ(0x0000004fu, ImmutableString("lessThanEqual(10B10B").mangledNameHash()); ASSERT_EQ(0x0000003cu, ImmutableString("lessThanEqual(20B20B").mangledNameHash()); ASSERT_EQ(0x00000015u, ImmutableString("lessThanEqual(30B30B").mangledNameHash()); - ASSERT_EQ(0x00000344u, ImmutableString("lessThanEqual(10D10D").mangledNameHash()); - ASSERT_EQ(0x00000305u, ImmutableString("lessThanEqual(20D20D").mangledNameHash()); - ASSERT_EQ(0x00000260u, ImmutableString("lessThanEqual(30D30D").mangledNameHash()); - ASSERT_EQ(0x0000023fu, ImmutableString("lessThanEqual(10E10E").mangledNameHash()); - ASSERT_EQ(0x00000295u, ImmutableString("lessThanEqual(20E20E").mangledNameHash()); - ASSERT_EQ(0x000000cbu, ImmutableString("lessThanEqual(30E30E").mangledNameHash()); - ASSERT_EQ(0x00000379u, ImmutableString("greaterThan(10B10B").mangledNameHash()); + ASSERT_EQ(0x0000034au, ImmutableString("lessThanEqual(10D10D").mangledNameHash()); + ASSERT_EQ(0x0000030bu, ImmutableString("lessThanEqual(20D20D").mangledNameHash()); + ASSERT_EQ(0x00000266u, ImmutableString("lessThanEqual(30D30D").mangledNameHash()); + ASSERT_EQ(0x00000245u, ImmutableString("lessThanEqual(10E10E").mangledNameHash()); + ASSERT_EQ(0x0000029bu, ImmutableString("lessThanEqual(20E20E").mangledNameHash()); + ASSERT_EQ(0x000000ceu, ImmutableString("lessThanEqual(30E30E").mangledNameHash()); + ASSERT_EQ(0x0000037fu, ImmutableString("greaterThan(10B10B").mangledNameHash()); ASSERT_EQ(0x0000006au, ImmutableString("greaterThan(20B20B").mangledNameHash()); - ASSERT_EQ(0x000000ecu, ImmutableString("greaterThan(30B30B").mangledNameHash()); - ASSERT_EQ(0x000000deu, ImmutableString("greaterThan(10D10D").mangledNameHash()); - ASSERT_EQ(0x000000eau, ImmutableString("greaterThan(20D20D").mangledNameHash()); - ASSERT_EQ(0x000000ddu, ImmutableString("greaterThan(30D30D").mangledNameHash()); - ASSERT_EQ(0x00000389u, ImmutableString("greaterThan(10E10E").mangledNameHash()); - ASSERT_EQ(0x000001a8u, ImmutableString("greaterThan(20E20E").mangledNameHash()); - ASSERT_EQ(0x000001ebu, ImmutableString("greaterThan(30E30E").mangledNameHash()); - ASSERT_EQ(0x0000032au, ImmutableString("greaterThanEqual(10B10B").mangledNameHash()); - ASSERT_EQ(0x00000224u, ImmutableString("greaterThanEqual(20B20B").mangledNameHash()); - ASSERT_EQ(0x000002dcu, ImmutableString("greaterThanEqual(30B30B").mangledNameHash()); - ASSERT_EQ(0x00000162u, ImmutableString("greaterThanEqual(10D10D").mangledNameHash()); + ASSERT_EQ(0x000000efu, ImmutableString("greaterThan(30B30B").mangledNameHash()); + ASSERT_EQ(0x000000e1u, ImmutableString("greaterThan(10D10D").mangledNameHash()); + ASSERT_EQ(0x000000edu, ImmutableString("greaterThan(20D20D").mangledNameHash()); + ASSERT_EQ(0x000000e0u, ImmutableString("greaterThan(30D30D").mangledNameHash()); + ASSERT_EQ(0x0000038fu, ImmutableString("greaterThan(10E10E").mangledNameHash()); + ASSERT_EQ(0x000001aeu, ImmutableString("greaterThan(20E20E").mangledNameHash()); + ASSERT_EQ(0x000001f1u, ImmutableString("greaterThan(30E30E").mangledNameHash()); + ASSERT_EQ(0x00000330u, ImmutableString("greaterThanEqual(10B10B").mangledNameHash()); + ASSERT_EQ(0x0000022au, ImmutableString("greaterThanEqual(20B20B").mangledNameHash()); + ASSERT_EQ(0x000002e2u, ImmutableString("greaterThanEqual(30B30B").mangledNameHash()); + ASSERT_EQ(0x00000167u, ImmutableString("greaterThanEqual(10D10D").mangledNameHash()); ASSERT_EQ(0x00000016u, ImmutableString("greaterThanEqual(20D20D").mangledNameHash()); - ASSERT_EQ(0x00000353u, ImmutableString("greaterThanEqual(30D30D").mangledNameHash()); - ASSERT_EQ(0x00000265u, ImmutableString("greaterThanEqual(10E10E").mangledNameHash()); - ASSERT_EQ(0x00000125u, ImmutableString("greaterThanEqual(20E20E").mangledNameHash()); - ASSERT_EQ(0x0000024bu, ImmutableString("greaterThanEqual(30E30E").mangledNameHash()); - ASSERT_EQ(0x0000036fu, ImmutableString("equal(10B10B").mangledNameHash()); - ASSERT_EQ(0x0000017du, ImmutableString("equal(20B20B").mangledNameHash()); - ASSERT_EQ(0x0000036cu, ImmutableString("equal(30B30B").mangledNameHash()); + ASSERT_EQ(0x00000359u, ImmutableString("greaterThanEqual(30D30D").mangledNameHash()); + ASSERT_EQ(0x0000026bu, ImmutableString("greaterThanEqual(10E10E").mangledNameHash()); + ASSERT_EQ(0x00000129u, ImmutableString("greaterThanEqual(20E20E").mangledNameHash()); + ASSERT_EQ(0x00000251u, ImmutableString("greaterThanEqual(30E30E").mangledNameHash()); + ASSERT_EQ(0x00000375u, ImmutableString("equal(10B10B").mangledNameHash()); + ASSERT_EQ(0x00000182u, ImmutableString("equal(20B20B").mangledNameHash()); + ASSERT_EQ(0x00000372u, ImmutableString("equal(30B30B").mangledNameHash()); ASSERT_EQ(0x00000053u, ImmutableString("equal(10D10D").mangledNameHash()); - ASSERT_EQ(0x000002bau, ImmutableString("equal(20D20D").mangledNameHash()); - ASSERT_EQ(0x0000025cu, ImmutableString("equal(30D30D").mangledNameHash()); - ASSERT_EQ(0x0000035du, ImmutableString("equal(10E10E").mangledNameHash()); - ASSERT_EQ(0x00000221u, ImmutableString("equal(20E20E").mangledNameHash()); - ASSERT_EQ(0x0000029cu, ImmutableString("equal(30E30E").mangledNameHash()); - ASSERT_EQ(0x0000015au, ImmutableString("equal(10F10F").mangledNameHash()); - ASSERT_EQ(0x0000036au, ImmutableString("equal(20F20F").mangledNameHash()); - ASSERT_EQ(0x000002e0u, ImmutableString("equal(30F30F").mangledNameHash()); - ASSERT_EQ(0x000001f9u, ImmutableString("notEqual(10B10B").mangledNameHash()); - ASSERT_EQ(0x00000354u, ImmutableString("notEqual(20B20B").mangledNameHash()); - ASSERT_EQ(0x00000194u, ImmutableString("notEqual(30B30B").mangledNameHash()); - ASSERT_EQ(0x000002aeu, ImmutableString("notEqual(10D10D").mangledNameHash()); + ASSERT_EQ(0x000002c0u, ImmutableString("equal(20D20D").mangledNameHash()); + ASSERT_EQ(0x00000262u, ImmutableString("equal(30D30D").mangledNameHash()); + ASSERT_EQ(0x00000363u, ImmutableString("equal(10E10E").mangledNameHash()); + ASSERT_EQ(0x00000227u, ImmutableString("equal(20E20E").mangledNameHash()); + ASSERT_EQ(0x000002a2u, ImmutableString("equal(30E30E").mangledNameHash()); + ASSERT_EQ(0x0000015fu, ImmutableString("equal(10F10F").mangledNameHash()); + ASSERT_EQ(0x00000370u, ImmutableString("equal(20F20F").mangledNameHash()); + ASSERT_EQ(0x000002e6u, ImmutableString("equal(30F30F").mangledNameHash()); + ASSERT_EQ(0x000001ffu, ImmutableString("notEqual(10B10B").mangledNameHash()); + ASSERT_EQ(0x0000035au, ImmutableString("notEqual(20B20B").mangledNameHash()); + ASSERT_EQ(0x0000019au, ImmutableString("notEqual(30B30B").mangledNameHash()); + ASSERT_EQ(0x000002b4u, ImmutableString("notEqual(10D10D").mangledNameHash()); ASSERT_EQ(0x00000007u, ImmutableString("notEqual(20D20D").mangledNameHash()); - ASSERT_EQ(0x000000dau, ImmutableString("notEqual(30D30D").mangledNameHash()); - ASSERT_EQ(0x00000367u, ImmutableString("notEqual(10E10E").mangledNameHash()); - ASSERT_EQ(0x000001c2u, ImmutableString("notEqual(20E20E").mangledNameHash()); - ASSERT_EQ(0x0000023du, ImmutableString("notEqual(30E30E").mangledNameHash()); - ASSERT_EQ(0x00000331u, ImmutableString("notEqual(10F10F").mangledNameHash()); - ASSERT_EQ(0x0000018cu, ImmutableString("notEqual(20F20F").mangledNameHash()); - ASSERT_EQ(0x000002e3u, ImmutableString("notEqual(30F30F").mangledNameHash()); - ASSERT_EQ(0x00000256u, ImmutableString("any(10F").mangledNameHash()); - ASSERT_EQ(0x00000200u, ImmutableString("any(20F").mangledNameHash()); - ASSERT_EQ(0x000000e8u, ImmutableString("any(30F").mangledNameHash()); - ASSERT_EQ(0x0000027cu, ImmutableString("all(10F").mangledNameHash()); - ASSERT_EQ(0x000002d0u, ImmutableString("all(20F").mangledNameHash()); + ASSERT_EQ(0x000000ddu, ImmutableString("notEqual(30D30D").mangledNameHash()); + ASSERT_EQ(0x0000036du, ImmutableString("notEqual(10E10E").mangledNameHash()); + ASSERT_EQ(0x000001c8u, ImmutableString("notEqual(20E20E").mangledNameHash()); + ASSERT_EQ(0x00000243u, ImmutableString("notEqual(30E30E").mangledNameHash()); + ASSERT_EQ(0x00000337u, ImmutableString("notEqual(10F10F").mangledNameHash()); + ASSERT_EQ(0x00000192u, ImmutableString("notEqual(20F20F").mangledNameHash()); + ASSERT_EQ(0x000002e9u, ImmutableString("notEqual(30F30F").mangledNameHash()); + ASSERT_EQ(0x0000025cu, ImmutableString("any(10F").mangledNameHash()); + ASSERT_EQ(0x00000206u, ImmutableString("any(20F").mangledNameHash()); + ASSERT_EQ(0x000000ebu, ImmutableString("any(30F").mangledNameHash()); + ASSERT_EQ(0x00000282u, ImmutableString("all(10F").mangledNameHash()); + ASSERT_EQ(0x000002d6u, ImmutableString("all(20F").mangledNameHash()); ASSERT_EQ(0x00000049u, ImmutableString("all(30F").mangledNameHash()); ASSERT_EQ(0x00000096u, ImmutableString("not(10F").mangledNameHash()); - ASSERT_EQ(0x0000012bu, ImmutableString("not(20F").mangledNameHash()); - ASSERT_EQ(0x0000032fu, ImmutableString("not(30F").mangledNameHash()); - ASSERT_EQ(0x000002e1u, ImmutableString("bitfieldExtract(00D00D00D").mangledNameHash()); - ASSERT_EQ(0x0000018eu, ImmutableString("bitfieldExtract(10D00D00D").mangledNameHash()); - ASSERT_EQ(0x000001f7u, ImmutableString("bitfieldExtract(20D00D00D").mangledNameHash()); - ASSERT_EQ(0x000002c4u, ImmutableString("bitfieldExtract(30D00D00D").mangledNameHash()); - ASSERT_EQ(0x000001fbu, ImmutableString("bitfieldExtract(00E00D00D").mangledNameHash()); - ASSERT_EQ(0x000000e1u, ImmutableString("bitfieldExtract(10E00D00D").mangledNameHash()); - ASSERT_EQ(0x000002a7u, ImmutableString("bitfieldExtract(20E00D00D").mangledNameHash()); - ASSERT_EQ(0x00000160u, ImmutableString("bitfieldExtract(30E00D00D").mangledNameHash()); + ASSERT_EQ(0x0000012fu, ImmutableString("not(20F").mangledNameHash()); + ASSERT_EQ(0x00000335u, ImmutableString("not(30F").mangledNameHash()); + ASSERT_EQ(0x000002e7u, ImmutableString("bitfieldExtract(00D00D00D").mangledNameHash()); + ASSERT_EQ(0x00000194u, ImmutableString("bitfieldExtract(10D00D00D").mangledNameHash()); + ASSERT_EQ(0x000001fdu, ImmutableString("bitfieldExtract(20D00D00D").mangledNameHash()); + ASSERT_EQ(0x000002cau, ImmutableString("bitfieldExtract(30D00D00D").mangledNameHash()); + ASSERT_EQ(0x00000201u, ImmutableString("bitfieldExtract(00E00D00D").mangledNameHash()); + ASSERT_EQ(0x000000e4u, ImmutableString("bitfieldExtract(10E00D00D").mangledNameHash()); + ASSERT_EQ(0x000002adu, ImmutableString("bitfieldExtract(20E00D00D").mangledNameHash()); + ASSERT_EQ(0x00000165u, ImmutableString("bitfieldExtract(30E00D00D").mangledNameHash()); ASSERT_EQ(0x0000001au, ImmutableString("bitfieldInsert(00D00D00D00D").mangledNameHash()); - ASSERT_EQ(0x0000033bu, ImmutableString("bitfieldInsert(10D10D00D00D").mangledNameHash()); + ASSERT_EQ(0x00000341u, ImmutableString("bitfieldInsert(10D10D00D00D").mangledNameHash()); ASSERT_EQ(0x00000042u, ImmutableString("bitfieldInsert(20D20D00D00D").mangledNameHash()); - ASSERT_EQ(0x000000d6u, ImmutableString("bitfieldInsert(30D30D00D00D").mangledNameHash()); + ASSERT_EQ(0x000000d9u, ImmutableString("bitfieldInsert(30D30D00D00D").mangledNameHash()); ASSERT_EQ(0x00000068u, ImmutableString("bitfieldInsert(00E00E00D00D").mangledNameHash()); - ASSERT_EQ(0x000002efu, ImmutableString("bitfieldInsert(10E10E00D00D").mangledNameHash()); - ASSERT_EQ(0x0000021fu, ImmutableString("bitfieldInsert(20E20E00D00D").mangledNameHash()); - ASSERT_EQ(0x00000381u, ImmutableString("bitfieldInsert(30E30E00D00D").mangledNameHash()); - ASSERT_EQ(0x0000015cu, ImmutableString("bitfieldReverse(00D").mangledNameHash()); - ASSERT_EQ(0x00000277u, ImmutableString("bitfieldReverse(10D").mangledNameHash()); + ASSERT_EQ(0x000002f5u, ImmutableString("bitfieldInsert(10E10E00D00D").mangledNameHash()); + ASSERT_EQ(0x00000225u, ImmutableString("bitfieldInsert(20E20E00D00D").mangledNameHash()); + ASSERT_EQ(0x00000387u, ImmutableString("bitfieldInsert(30E30E00D00D").mangledNameHash()); + ASSERT_EQ(0x00000161u, ImmutableString("bitfieldReverse(00D").mangledNameHash()); + ASSERT_EQ(0x0000027du, ImmutableString("bitfieldReverse(10D").mangledNameHash()); ASSERT_EQ(0x00000050u, ImmutableString("bitfieldReverse(20D").mangledNameHash()); - ASSERT_EQ(0x00000170u, ImmutableString("bitfieldReverse(30D").mangledNameHash()); - ASSERT_EQ(0x0000015du, ImmutableString("bitfieldReverse(00E").mangledNameHash()); - ASSERT_EQ(0x00000276u, ImmutableString("bitfieldReverse(10E").mangledNameHash()); + ASSERT_EQ(0x00000175u, ImmutableString("bitfieldReverse(30D").mangledNameHash()); + ASSERT_EQ(0x00000162u, ImmutableString("bitfieldReverse(00E").mangledNameHash()); + ASSERT_EQ(0x0000027cu, ImmutableString("bitfieldReverse(10E").mangledNameHash()); ASSERT_EQ(0x00000051u, ImmutableString("bitfieldReverse(20E").mangledNameHash()); - ASSERT_EQ(0x0000016fu, ImmutableString("bitfieldReverse(30E").mangledNameHash()); + ASSERT_EQ(0x00000174u, ImmutableString("bitfieldReverse(30E").mangledNameHash()); ASSERT_EQ(0x00000023u, ImmutableString("bitCount(00D").mangledNameHash()); - ASSERT_EQ(0x0000029bu, ImmutableString("bitCount(10D").mangledNameHash()); - ASSERT_EQ(0x0000019au, ImmutableString("bitCount(20D").mangledNameHash()); + ASSERT_EQ(0x000002a1u, ImmutableString("bitCount(10D").mangledNameHash()); + ASSERT_EQ(0x000001a0u, ImmutableString("bitCount(20D").mangledNameHash()); ASSERT_EQ(0x0000007bu, ImmutableString("bitCount(30D").mangledNameHash()); - ASSERT_EQ(0x000000f5u, ImmutableString("bitCount(00E").mangledNameHash()); - ASSERT_EQ(0x00000151u, ImmutableString("bitCount(10E").mangledNameHash()); - ASSERT_EQ(0x000002b8u, ImmutableString("bitCount(20E").mangledNameHash()); - ASSERT_EQ(0x00000135u, ImmutableString("bitCount(30E").mangledNameHash()); - ASSERT_EQ(0x000002d9u, ImmutableString("findLSB(00D").mangledNameHash()); - ASSERT_EQ(0x000001b0u, ImmutableString("findLSB(10D").mangledNameHash()); + ASSERT_EQ(0x000000f9u, ImmutableString("bitCount(00E").mangledNameHash()); + ASSERT_EQ(0x00000156u, ImmutableString("bitCount(10E").mangledNameHash()); + ASSERT_EQ(0x000002beu, ImmutableString("bitCount(20E").mangledNameHash()); + ASSERT_EQ(0x0000013au, ImmutableString("bitCount(30E").mangledNameHash()); + ASSERT_EQ(0x000002dfu, ImmutableString("findLSB(00D").mangledNameHash()); + ASSERT_EQ(0x000001b6u, ImmutableString("findLSB(10D").mangledNameHash()); ASSERT_EQ(0x00000090u, ImmutableString("findLSB(20D").mangledNameHash()); - ASSERT_EQ(0x000002b6u, ImmutableString("findLSB(30D").mangledNameHash()); - ASSERT_EQ(0x000002d8u, ImmutableString("findLSB(00E").mangledNameHash()); - ASSERT_EQ(0x000001b1u, ImmutableString("findLSB(10E").mangledNameHash()); + ASSERT_EQ(0x000002bcu, ImmutableString("findLSB(30D").mangledNameHash()); + ASSERT_EQ(0x000002deu, ImmutableString("findLSB(00E").mangledNameHash()); + ASSERT_EQ(0x000001b7u, ImmutableString("findLSB(10E").mangledNameHash()); ASSERT_EQ(0x0000008fu, ImmutableString("findLSB(20E").mangledNameHash()); - ASSERT_EQ(0x000002b7u, ImmutableString("findLSB(30E").mangledNameHash()); - ASSERT_EQ(0x000002a3u, ImmutableString("findMSB(00D").mangledNameHash()); - ASSERT_EQ(0x000000f1u, ImmutableString("findMSB(10D").mangledNameHash()); - ASSERT_EQ(0x0000012du, ImmutableString("findMSB(20D").mangledNameHash()); - ASSERT_EQ(0x00000248u, ImmutableString("findMSB(30D").mangledNameHash()); - ASSERT_EQ(0x000002a6u, ImmutableString("findMSB(00E").mangledNameHash()); - ASSERT_EQ(0x000000f0u, ImmutableString("findMSB(10E").mangledNameHash()); - ASSERT_EQ(0x0000012eu, ImmutableString("findMSB(20E").mangledNameHash()); - ASSERT_EQ(0x00000247u, ImmutableString("findMSB(30E").mangledNameHash()); - ASSERT_EQ(0x00000225u, ImmutableString("uaddCarry(00E00E00E").mangledNameHash()); - ASSERT_EQ(0x0000034eu, ImmutableString("uaddCarry(10E10E10E").mangledNameHash()); - ASSERT_EQ(0x00000373u, ImmutableString("uaddCarry(20E20E20E").mangledNameHash()); - ASSERT_EQ(0x000001a2u, ImmutableString("uaddCarry(30E30E30E").mangledNameHash()); - ASSERT_EQ(0x000001ccu, ImmutableString("usubBorrow(00E00E00E").mangledNameHash()); - ASSERT_EQ(0x0000036eu, ImmutableString("usubBorrow(10E10E10E").mangledNameHash()); - ASSERT_EQ(0x000000f8u, ImmutableString("usubBorrow(20E20E20E").mangledNameHash()); - ASSERT_EQ(0x0000026du, ImmutableString("usubBorrow(30E30E30E").mangledNameHash()); - ASSERT_EQ(0x00000310u, ImmutableString("umulExtended(00E00E00E00E").mangledNameHash()); - ASSERT_EQ(0x00000189u, ImmutableString("umulExtended(10E10E10E10E").mangledNameHash()); - ASSERT_EQ(0x000002b3u, ImmutableString("umulExtended(20E20E20E20E").mangledNameHash()); - ASSERT_EQ(0x0000022fu, ImmutableString("umulExtended(30E30E30E30E").mangledNameHash()); - ASSERT_EQ(0x000001c9u, ImmutableString("imulExtended(00D00D00D00D").mangledNameHash()); + ASSERT_EQ(0x000002bdu, ImmutableString("findLSB(30E").mangledNameHash()); + ASSERT_EQ(0x000002a9u, ImmutableString("findMSB(00D").mangledNameHash()); + ASSERT_EQ(0x000000f4u, ImmutableString("findMSB(10D").mangledNameHash()); + ASSERT_EQ(0x00000131u, ImmutableString("findMSB(20D").mangledNameHash()); + ASSERT_EQ(0x0000024eu, ImmutableString("findMSB(30D").mangledNameHash()); + ASSERT_EQ(0x000002acu, ImmutableString("findMSB(00E").mangledNameHash()); + ASSERT_EQ(0x000000f3u, ImmutableString("findMSB(10E").mangledNameHash()); + ASSERT_EQ(0x00000132u, ImmutableString("findMSB(20E").mangledNameHash()); + ASSERT_EQ(0x0000024du, ImmutableString("findMSB(30E").mangledNameHash()); + ASSERT_EQ(0x0000022bu, ImmutableString("uaddCarry(00E00E00E").mangledNameHash()); + ASSERT_EQ(0x00000354u, ImmutableString("uaddCarry(10E10E10E").mangledNameHash()); + ASSERT_EQ(0x00000379u, ImmutableString("uaddCarry(20E20E20E").mangledNameHash()); + ASSERT_EQ(0x000001a8u, ImmutableString("uaddCarry(30E30E30E").mangledNameHash()); + ASSERT_EQ(0x000001d2u, ImmutableString("usubBorrow(00E00E00E").mangledNameHash()); + ASSERT_EQ(0x00000374u, ImmutableString("usubBorrow(10E10E10E").mangledNameHash()); + ASSERT_EQ(0x000000fcu, ImmutableString("usubBorrow(20E20E20E").mangledNameHash()); + ASSERT_EQ(0x00000273u, ImmutableString("usubBorrow(30E30E30E").mangledNameHash()); + ASSERT_EQ(0x00000316u, ImmutableString("umulExtended(00E00E00E00E").mangledNameHash()); + ASSERT_EQ(0x0000018fu, ImmutableString("umulExtended(10E10E10E10E").mangledNameHash()); + ASSERT_EQ(0x000002b9u, ImmutableString("umulExtended(20E20E20E20E").mangledNameHash()); + ASSERT_EQ(0x00000235u, ImmutableString("umulExtended(30E30E30E30E").mangledNameHash()); + ASSERT_EQ(0x000001cfu, ImmutableString("imulExtended(00D00D00D00D").mangledNameHash()); ASSERT_EQ(0x00000086u, ImmutableString("imulExtended(10D10D10D10D").mangledNameHash()); - ASSERT_EQ(0x000000e7u, ImmutableString("imulExtended(20D20D20D20D").mangledNameHash()); + ASSERT_EQ(0x000000eau, ImmutableString("imulExtended(20D20D20D20D").mangledNameHash()); ASSERT_EQ(0x00000027u, ImmutableString("imulExtended(30D30D30D30D").mangledNameHash()); ASSERT_EQ(0x00000095u, ImmutableString("texture2D(00I10B").mangledNameHash()); - ASSERT_EQ(0x00000129u, ImmutableString("texture2DProj(00I20B").mangledNameHash()); - ASSERT_EQ(0x0000023au, ImmutableString("texture2DProj(00I30B").mangledNameHash()); - ASSERT_EQ(0x0000020eu, ImmutableString("textureCube(00K20B").mangledNameHash()); - ASSERT_EQ(0x00000341u, ImmutableString("texture2D(00M10B").mangledNameHash()); - ASSERT_EQ(0x000002aau, ImmutableString("texture2DProj(00M20B").mangledNameHash()); - ASSERT_EQ(0x000002afu, ImmutableString("texture2DProj(00M30B").mangledNameHash()); - ASSERT_EQ(0x000000e6u, ImmutableString("texture2DRect(00O10B").mangledNameHash()); - ASSERT_EQ(0x0000039eu, ImmutableString("texture2DRectProj(00O20B").mangledNameHash()); - ASSERT_EQ(0x00000109u, ImmutableString("texture2DRectProj(00O30B").mangledNameHash()); + ASSERT_EQ(0x0000012du, ImmutableString("texture2DProj(00I20B").mangledNameHash()); + ASSERT_EQ(0x00000240u, ImmutableString("texture2DProj(00I30B").mangledNameHash()); + ASSERT_EQ(0x00000214u, ImmutableString("textureCube(00K20B").mangledNameHash()); + ASSERT_EQ(0x00000347u, ImmutableString("texture2D(00M10B").mangledNameHash()); + ASSERT_EQ(0x000002b0u, ImmutableString("texture2DProj(00M20B").mangledNameHash()); + ASSERT_EQ(0x000002b5u, ImmutableString("texture2DProj(00M30B").mangledNameHash()); + ASSERT_EQ(0x000000e9u, ImmutableString("texture2DRect(00O10B").mangledNameHash()); + ASSERT_EQ(0x000003a4u, ImmutableString("texture2DRectProj(00O20B").mangledNameHash()); + ASSERT_EQ(0x0000010du, ImmutableString("texture2DRectProj(00O30B").mangledNameHash()); ASSERT_EQ(0x0000009du, ImmutableString("texture(00O10B").mangledNameHash()); - ASSERT_EQ(0x000000fcu, ImmutableString("textureProj(00O20B").mangledNameHash()); - ASSERT_EQ(0x0000021cu, ImmutableString("textureProj(00O30B").mangledNameHash()); + ASSERT_EQ(0x00000100u, ImmutableString("textureProj(00O20B").mangledNameHash()); + ASSERT_EQ(0x00000222u, ImmutableString("textureProj(00O30B").mangledNameHash()); ASSERT_EQ(0x00000067u, ImmutableString("texture2DGradEXT(00I10B10B10B").mangledNameHash()); - ASSERT_EQ(0x00000301u, ImmutableString("texture2DProjGradEXT(00I20B10B10B").mangledNameHash()); + ASSERT_EQ(0x00000307u, ImmutableString("texture2DProjGradEXT(00I20B10B10B").mangledNameHash()); ASSERT_EQ(0x0000006du, ImmutableString("texture2DProjGradEXT(00I30B10B10B").mangledNameHash()); - ASSERT_EQ(0x000001d2u, ImmutableString("textureCubeGradEXT(00K20B20B20B").mangledNameHash()); - ASSERT_EQ(0x000001e8u, ImmutableString("texture2D(00I10B00B").mangledNameHash()); - ASSERT_EQ(0x000002d7u, ImmutableString("texture2DProj(00I20B00B").mangledNameHash()); - ASSERT_EQ(0x000001d1u, ImmutableString("texture2DProj(00I30B00B").mangledNameHash()); - ASSERT_EQ(0x0000032cu, ImmutableString("textureCube(00K20B00B").mangledNameHash()); - ASSERT_EQ(0x0000027fu, ImmutableString("dFdx(00B").mangledNameHash()); - ASSERT_EQ(0x0000016du, ImmutableString("dFdx(10B").mangledNameHash()); - ASSERT_EQ(0x0000011bu, ImmutableString("dFdx(20B").mangledNameHash()); + ASSERT_EQ(0x000001d8u, ImmutableString("textureCubeGradEXT(00K20B20B20B").mangledNameHash()); + ASSERT_EQ(0x000001eeu, ImmutableString("texture2D(00I10B00B").mangledNameHash()); + ASSERT_EQ(0x000002ddu, ImmutableString("texture2DProj(00I20B00B").mangledNameHash()); + ASSERT_EQ(0x000001d7u, ImmutableString("texture2DProj(00I30B00B").mangledNameHash()); + ASSERT_EQ(0x00000332u, ImmutableString("textureCube(00K20B00B").mangledNameHash()); + ASSERT_EQ(0x00000285u, ImmutableString("dFdx(00B").mangledNameHash()); + ASSERT_EQ(0x00000172u, ImmutableString("dFdx(10B").mangledNameHash()); + ASSERT_EQ(0x0000011fu, ImmutableString("dFdx(20B").mangledNameHash()); ASSERT_EQ(0x00000010u, ImmutableString("dFdx(30B").mangledNameHash()); - ASSERT_EQ(0x0000038bu, ImmutableString("dFdy(00B").mangledNameHash()); - ASSERT_EQ(0x00000140u, ImmutableString("dFdy(10B").mangledNameHash()); - ASSERT_EQ(0x00000198u, ImmutableString("dFdy(20B").mangledNameHash()); - ASSERT_EQ(0x000002ccu, ImmutableString("dFdy(30B").mangledNameHash()); - ASSERT_EQ(0x0000013eu, ImmutableString("fwidth(00B").mangledNameHash()); - ASSERT_EQ(0x000000d8u, ImmutableString("fwidth(10B").mangledNameHash()); - ASSERT_EQ(0x00000314u, ImmutableString("fwidth(20B").mangledNameHash()); - ASSERT_EQ(0x0000024cu, ImmutableString("fwidth(30B").mangledNameHash()); - ASSERT_EQ(0x000002cbu, ImmutableString("texture2DLodEXT(00I10B00B").mangledNameHash()); - ASSERT_EQ(0x000002e2u, ImmutableString("texture2DProjLodEXT(00I20B00B").mangledNameHash()); - ASSERT_EQ(0x00000196u, ImmutableString("texture2DProjLodEXT(00I30B00B").mangledNameHash()); - ASSERT_EQ(0x0000034bu, ImmutableString("textureCubeLodEXT(00K20B00B").mangledNameHash()); - ASSERT_EQ(0x000001b5u, ImmutableString("texture3D(00J20B").mangledNameHash()); - ASSERT_EQ(0x00000278u, ImmutableString("texture3DProj(00J30B").mangledNameHash()); - ASSERT_EQ(0x00000235u, ImmutableString("texture3D(00J20B00B").mangledNameHash()); - ASSERT_EQ(0x0000025du, ImmutableString("texture3DProj(00J30B00B").mangledNameHash()); - ASSERT_EQ(0x000003a8u, ImmutableString("texture3DLod(00J20B00B").mangledNameHash()); - ASSERT_EQ(0x0000012au, ImmutableString("texture3DProjLod(00J30B00B").mangledNameHash()); - ASSERT_EQ(0x0000028eu, ImmutableString("texture2DLod(00I10B00B").mangledNameHash()); - ASSERT_EQ(0x00000107u, ImmutableString("texture2DProjLod(00I20B00B").mangledNameHash()); - ASSERT_EQ(0x00000371u, ImmutableString("texture2DProjLod(00I30B00B").mangledNameHash()); - ASSERT_EQ(0x00000393u, ImmutableString("textureCubeLod(00K20B00B").mangledNameHash()); - ASSERT_EQ(0x000001d3u, ImmutableString("texture(00I10B").mangledNameHash()); - ASSERT_EQ(0x0000026bu, ImmutableString("texture(00R10B").mangledNameHash()); - ASSERT_EQ(0x000002fbu, ImmutableString("texture(00X10B").mangledNameHash()); - ASSERT_EQ(0x00000119u, ImmutableString("texture(00J20B").mangledNameHash()); - ASSERT_EQ(0x00000187u, ImmutableString("texture(00S20B").mangledNameHash()); + ASSERT_EQ(0x00000391u, ImmutableString("dFdy(00B").mangledNameHash()); + ASSERT_EQ(0x00000145u, ImmutableString("dFdy(10B").mangledNameHash()); + ASSERT_EQ(0x0000019eu, ImmutableString("dFdy(20B").mangledNameHash()); + ASSERT_EQ(0x000002d2u, ImmutableString("dFdy(30B").mangledNameHash()); + ASSERT_EQ(0x00000143u, ImmutableString("fwidth(00B").mangledNameHash()); + ASSERT_EQ(0x000000dbu, ImmutableString("fwidth(10B").mangledNameHash()); + ASSERT_EQ(0x0000031au, ImmutableString("fwidth(20B").mangledNameHash()); + ASSERT_EQ(0x00000252u, ImmutableString("fwidth(30B").mangledNameHash()); + ASSERT_EQ(0x000002d1u, ImmutableString("texture2DLodEXT(00I10B00B").mangledNameHash()); + ASSERT_EQ(0x000002e8u, ImmutableString("texture2DProjLodEXT(00I20B00B").mangledNameHash()); + ASSERT_EQ(0x0000019cu, ImmutableString("texture2DProjLodEXT(00I30B00B").mangledNameHash()); + ASSERT_EQ(0x00000351u, ImmutableString("textureCubeLodEXT(00K20B00B").mangledNameHash()); + ASSERT_EQ(0x000001bbu, ImmutableString("texture3D(00J20B").mangledNameHash()); + ASSERT_EQ(0x0000027eu, ImmutableString("texture3DProj(00J30B").mangledNameHash()); + ASSERT_EQ(0x0000023bu, ImmutableString("texture3D(00J20B00B").mangledNameHash()); + ASSERT_EQ(0x00000263u, ImmutableString("texture3DProj(00J30B00B").mangledNameHash()); + ASSERT_EQ(0x000003aeu, ImmutableString("texture3DLod(00J20B00B").mangledNameHash()); + ASSERT_EQ(0x0000012eu, ImmutableString("texture3DProjLod(00J30B00B").mangledNameHash()); + ASSERT_EQ(0x00000294u, ImmutableString("texture2DLod(00I10B00B").mangledNameHash()); + ASSERT_EQ(0x0000010bu, ImmutableString("texture2DProjLod(00I20B00B").mangledNameHash()); + ASSERT_EQ(0x00000377u, ImmutableString("texture2DProjLod(00I30B00B").mangledNameHash()); + ASSERT_EQ(0x00000399u, ImmutableString("textureCubeLod(00K20B00B").mangledNameHash()); + ASSERT_EQ(0x000001d9u, ImmutableString("texture(00I10B").mangledNameHash()); + ASSERT_EQ(0x00000271u, ImmutableString("texture(00R10B").mangledNameHash()); + ASSERT_EQ(0x00000301u, ImmutableString("texture(00X10B").mangledNameHash()); + ASSERT_EQ(0x0000011du, ImmutableString("texture(00J20B").mangledNameHash()); + ASSERT_EQ(0x0000018du, ImmutableString("texture(00S20B").mangledNameHash()); ASSERT_EQ(0x00000091u, ImmutableString("texture(00Y20B").mangledNameHash()); - ASSERT_EQ(0x00000321u, ImmutableString("texture(00K20B").mangledNameHash()); + ASSERT_EQ(0x00000327u, ImmutableString("texture(00K20B").mangledNameHash()); ASSERT_EQ(0x0000008au, ImmutableString("texture(00T20B").mangledNameHash()); ASSERT_EQ(0x00000044u, ImmutableString("texture(00Z20B").mangledNameHash()); - ASSERT_EQ(0x00000122u, ImmutableString("texture(00L20B").mangledNameHash()); - ASSERT_EQ(0x000000dfu, ImmutableString("texture(00U20B").mangledNameHash()); - ASSERT_EQ(0x00000237u, ImmutableString("texture(00a20B").mangledNameHash()); + ASSERT_EQ(0x00000126u, ImmutableString("texture(00L20B").mangledNameHash()); + ASSERT_EQ(0x000000e2u, ImmutableString("texture(00U20B").mangledNameHash()); + ASSERT_EQ(0x0000023du, ImmutableString("texture(00a20B").mangledNameHash()); ASSERT_EQ(0x0000002fu, ImmutableString("texture(00d20B").mangledNameHash()); - ASSERT_EQ(0x0000035au, ImmutableString("texture(00e30B").mangledNameHash()); - ASSERT_EQ(0x00000333u, ImmutableString("texture(00f30B").mangledNameHash()); + ASSERT_EQ(0x00000360u, ImmutableString("texture(00e30B").mangledNameHash()); + ASSERT_EQ(0x00000339u, ImmutableString("texture(00f30B").mangledNameHash()); ASSERT_EQ(0x0000005au, ImmutableString("textureProj(00I20B").mangledNameHash()); - ASSERT_EQ(0x00000386u, ImmutableString("textureProj(00R20B").mangledNameHash()); - ASSERT_EQ(0x0000011cu, ImmutableString("textureProj(00X20B").mangledNameHash()); - ASSERT_EQ(0x00000215u, ImmutableString("textureProj(00I30B").mangledNameHash()); - ASSERT_EQ(0x00000368u, ImmutableString("textureProj(00R30B").mangledNameHash()); - ASSERT_EQ(0x0000037eu, ImmutableString("textureProj(00X30B").mangledNameHash()); - ASSERT_EQ(0x00000143u, ImmutableString("textureProj(00J30B").mangledNameHash()); - ASSERT_EQ(0x000002c9u, ImmutableString("textureProj(00S30B").mangledNameHash()); - ASSERT_EQ(0x00000199u, ImmutableString("textureProj(00Y30B").mangledNameHash()); - ASSERT_EQ(0x000002fcu, ImmutableString("textureProj(00d30B").mangledNameHash()); - ASSERT_EQ(0x00000161u, ImmutableString("textureLod(00I10B00B").mangledNameHash()); - ASSERT_EQ(0x00000283u, ImmutableString("textureLod(00R10B00B").mangledNameHash()); - ASSERT_EQ(0x00000296u, ImmutableString("textureLod(00X10B00B").mangledNameHash()); - ASSERT_EQ(0x000000b9u, ImmutableString("textureLod(00J20B00B").mangledNameHash()); - ASSERT_EQ(0x00000306u, ImmutableString("textureLod(00S20B00B").mangledNameHash()); + ASSERT_EQ(0x0000038cu, ImmutableString("textureProj(00R20B").mangledNameHash()); + ASSERT_EQ(0x00000120u, ImmutableString("textureProj(00X20B").mangledNameHash()); + ASSERT_EQ(0x0000021bu, ImmutableString("textureProj(00I30B").mangledNameHash()); + ASSERT_EQ(0x0000036eu, ImmutableString("textureProj(00R30B").mangledNameHash()); + ASSERT_EQ(0x00000384u, ImmutableString("textureProj(00X30B").mangledNameHash()); + ASSERT_EQ(0x00000148u, ImmutableString("textureProj(00J30B").mangledNameHash()); + ASSERT_EQ(0x000002cfu, ImmutableString("textureProj(00S30B").mangledNameHash()); + ASSERT_EQ(0x0000019fu, ImmutableString("textureProj(00Y30B").mangledNameHash()); + ASSERT_EQ(0x00000302u, ImmutableString("textureProj(00d30B").mangledNameHash()); + ASSERT_EQ(0x00000166u, ImmutableString("textureLod(00I10B00B").mangledNameHash()); + ASSERT_EQ(0x00000289u, ImmutableString("textureLod(00R10B00B").mangledNameHash()); + ASSERT_EQ(0x0000029cu, ImmutableString("textureLod(00X10B00B").mangledNameHash()); + ASSERT_EQ(0x000000bau, ImmutableString("textureLod(00J20B00B").mangledNameHash()); + ASSERT_EQ(0x0000030cu, ImmutableString("textureLod(00S20B00B").mangledNameHash()); ASSERT_EQ(0x00000035u, ImmutableString("textureLod(00Y20B00B").mangledNameHash()); - ASSERT_EQ(0x00000399u, ImmutableString("textureLod(00K20B00B").mangledNameHash()); - ASSERT_EQ(0x000000f7u, ImmutableString("textureLod(00T20B00B").mangledNameHash()); - ASSERT_EQ(0x0000029fu, ImmutableString("textureLod(00Z20B00B").mangledNameHash()); + ASSERT_EQ(0x0000039fu, ImmutableString("textureLod(00K20B00B").mangledNameHash()); + ASSERT_EQ(0x000000fbu, ImmutableString("textureLod(00T20B00B").mangledNameHash()); + ASSERT_EQ(0x000002a5u, ImmutableString("textureLod(00Z20B00B").mangledNameHash()); ASSERT_EQ(0x00000009u, ImmutableString("textureLod(00L20B00B").mangledNameHash()); - ASSERT_EQ(0x0000036du, ImmutableString("textureLod(00U20B00B").mangledNameHash()); - ASSERT_EQ(0x00000255u, ImmutableString("textureLod(00a20B00B").mangledNameHash()); - ASSERT_EQ(0x00000147u, ImmutableString("textureLod(00d20B00B").mangledNameHash()); - ASSERT_EQ(0x000000bfu, ImmutableString("textureSize(00I00D").mangledNameHash()); + ASSERT_EQ(0x00000373u, ImmutableString("textureLod(00U20B00B").mangledNameHash()); + ASSERT_EQ(0x0000025bu, ImmutableString("textureLod(00a20B00B").mangledNameHash()); + ASSERT_EQ(0x0000014cu, ImmutableString("textureLod(00d20B00B").mangledNameHash()); + ASSERT_EQ(0x000000c2u, ImmutableString("textureSize(00I00D").mangledNameHash()); ASSERT_EQ(0x000000a6u, ImmutableString("textureSize(00R00D").mangledNameHash()); - ASSERT_EQ(0x00000378u, ImmutableString("textureSize(00X00D").mangledNameHash()); - ASSERT_EQ(0x000001bcu, ImmutableString("textureSize(00J00D").mangledNameHash()); - ASSERT_EQ(0x00000328u, ImmutableString("textureSize(00S00D").mangledNameHash()); + ASSERT_EQ(0x0000037eu, ImmutableString("textureSize(00X00D").mangledNameHash()); + ASSERT_EQ(0x000001c2u, ImmutableString("textureSize(00J00D").mangledNameHash()); + ASSERT_EQ(0x0000032eu, ImmutableString("textureSize(00S00D").mangledNameHash()); ASSERT_EQ(0x0000002du, ImmutableString("textureSize(00Y00D").mangledNameHash()); ASSERT_EQ(0x00000028u, ImmutableString("textureSize(00K00D").mangledNameHash()); - ASSERT_EQ(0x0000035bu, ImmutableString("textureSize(00T00D").mangledNameHash()); - ASSERT_EQ(0x000002c2u, ImmutableString("textureSize(00Z00D").mangledNameHash()); - ASSERT_EQ(0x000002beu, ImmutableString("textureSize(00L00D").mangledNameHash()); - ASSERT_EQ(0x000002ddu, ImmutableString("textureSize(00U00D").mangledNameHash()); - ASSERT_EQ(0x000000e0u, ImmutableString("textureSize(00a00D").mangledNameHash()); - ASSERT_EQ(0x00000348u, ImmutableString("textureSize(00d00D").mangledNameHash()); - ASSERT_EQ(0x000001c1u, ImmutableString("textureSize(00e00D").mangledNameHash()); - ASSERT_EQ(0x000002f5u, ImmutableString("textureSize(00f00D").mangledNameHash()); + ASSERT_EQ(0x00000361u, ImmutableString("textureSize(00T00D").mangledNameHash()); + ASSERT_EQ(0x000002c8u, ImmutableString("textureSize(00Z00D").mangledNameHash()); + ASSERT_EQ(0x000002c4u, ImmutableString("textureSize(00L00D").mangledNameHash()); + ASSERT_EQ(0x000002e3u, ImmutableString("textureSize(00U00D").mangledNameHash()); + ASSERT_EQ(0x000000e3u, ImmutableString("textureSize(00a00D").mangledNameHash()); + ASSERT_EQ(0x0000034eu, ImmutableString("textureSize(00d00D").mangledNameHash()); + ASSERT_EQ(0x000001c7u, ImmutableString("textureSize(00e00D").mangledNameHash()); + ASSERT_EQ(0x000002fbu, ImmutableString("textureSize(00f00D").mangledNameHash()); ASSERT_EQ(0x0000007cu, ImmutableString("textureProjLod(00I20B00B").mangledNameHash()); - ASSERT_EQ(0x000000d9u, ImmutableString("textureProjLod(00R20B00B").mangledNameHash()); - ASSERT_EQ(0x0000022cu, ImmutableString("textureProjLod(00X20B00B").mangledNameHash()); - ASSERT_EQ(0x000001aeu, ImmutableString("textureProjLod(00I30B00B").mangledNameHash()); - ASSERT_EQ(0x000001dfu, ImmutableString("textureProjLod(00R30B00B").mangledNameHash()); + ASSERT_EQ(0x000000dcu, ImmutableString("textureProjLod(00R20B00B").mangledNameHash()); + ASSERT_EQ(0x00000232u, ImmutableString("textureProjLod(00X20B00B").mangledNameHash()); + ASSERT_EQ(0x000001b4u, ImmutableString("textureProjLod(00I30B00B").mangledNameHash()); + ASSERT_EQ(0x000001e5u, ImmutableString("textureProjLod(00R30B00B").mangledNameHash()); ASSERT_EQ(0x0000002cu, ImmutableString("textureProjLod(00X30B00B").mangledNameHash()); - ASSERT_EQ(0x000000e5u, ImmutableString("textureProjLod(00J30B00B").mangledNameHash()); - ASSERT_EQ(0x000000bbu, ImmutableString("textureProjLod(00S30B00B").mangledNameHash()); - ASSERT_EQ(0x00000307u, ImmutableString("textureProjLod(00Y30B00B").mangledNameHash()); - ASSERT_EQ(0x0000022au, ImmutableString("textureProjLod(00d30B00B").mangledNameHash()); + ASSERT_EQ(0x000000e8u, ImmutableString("textureProjLod(00J30B00B").mangledNameHash()); + ASSERT_EQ(0x000000beu, ImmutableString("textureProjLod(00S30B00B").mangledNameHash()); + ASSERT_EQ(0x0000030du, ImmutableString("textureProjLod(00Y30B00B").mangledNameHash()); + ASSERT_EQ(0x00000230u, ImmutableString("textureProjLod(00d30B00B").mangledNameHash()); ASSERT_EQ(0x0000005bu, ImmutableString("texelFetch(00I10D00D").mangledNameHash()); - ASSERT_EQ(0x00000336u, ImmutableString("texelFetch(00R10D00D").mangledNameHash()); - ASSERT_EQ(0x0000028bu, ImmutableString("texelFetch(00X10D00D").mangledNameHash()); - ASSERT_EQ(0x00000395u, ImmutableString("texelFetch(00J20D00D").mangledNameHash()); - ASSERT_EQ(0x0000024fu, ImmutableString("texelFetch(00S20D00D").mangledNameHash()); + ASSERT_EQ(0x0000033cu, ImmutableString("texelFetch(00R10D00D").mangledNameHash()); + ASSERT_EQ(0x00000291u, ImmutableString("texelFetch(00X10D00D").mangledNameHash()); + ASSERT_EQ(0x0000039bu, ImmutableString("texelFetch(00J20D00D").mangledNameHash()); + ASSERT_EQ(0x00000255u, ImmutableString("texelFetch(00S20D00D").mangledNameHash()); ASSERT_EQ(0x0000006cu, ImmutableString("texelFetch(00Y20D00D").mangledNameHash()); - ASSERT_EQ(0x0000019cu, ImmutableString("texelFetch(00L20D00D").mangledNameHash()); - ASSERT_EQ(0x00000149u, ImmutableString("texelFetch(00U20D00D").mangledNameHash()); + ASSERT_EQ(0x000001a2u, ImmutableString("texelFetch(00L20D00D").mangledNameHash()); + ASSERT_EQ(0x0000014eu, ImmutableString("texelFetch(00U20D00D").mangledNameHash()); ASSERT_EQ(0x00000038u, ImmutableString("texelFetch(00a20D00D").mangledNameHash()); ASSERT_EQ(0x00000021u, ImmutableString("textureGrad(00I10B10B10B").mangledNameHash()); - ASSERT_EQ(0x0000033eu, ImmutableString("textureGrad(00R10B10B10B").mangledNameHash()); - ASSERT_EQ(0x00000249u, ImmutableString("textureGrad(00X10B10B10B").mangledNameHash()); - ASSERT_EQ(0x000001b8u, ImmutableString("textureGrad(00J20B20B20B").mangledNameHash()); - ASSERT_EQ(0x0000010bu, ImmutableString("textureGrad(00S20B20B20B").mangledNameHash()); - ASSERT_EQ(0x00000114u, ImmutableString("textureGrad(00Y20B20B20B").mangledNameHash()); - ASSERT_EQ(0x0000024du, ImmutableString("textureGrad(00K20B20B20B").mangledNameHash()); - ASSERT_EQ(0x00000360u, ImmutableString("textureGrad(00T20B20B20B").mangledNameHash()); - ASSERT_EQ(0x00000159u, ImmutableString("textureGrad(00Z20B20B20B").mangledNameHash()); + ASSERT_EQ(0x00000344u, ImmutableString("textureGrad(00R10B10B10B").mangledNameHash()); + ASSERT_EQ(0x0000024fu, ImmutableString("textureGrad(00X10B10B10B").mangledNameHash()); + ASSERT_EQ(0x000001beu, ImmutableString("textureGrad(00J20B20B20B").mangledNameHash()); + ASSERT_EQ(0x0000010fu, ImmutableString("textureGrad(00S20B20B20B").mangledNameHash()); + ASSERT_EQ(0x00000118u, ImmutableString("textureGrad(00Y20B20B20B").mangledNameHash()); + ASSERT_EQ(0x00000253u, ImmutableString("textureGrad(00K20B20B20B").mangledNameHash()); + ASSERT_EQ(0x00000366u, ImmutableString("textureGrad(00T20B20B20B").mangledNameHash()); + ASSERT_EQ(0x0000015eu, ImmutableString("textureGrad(00Z20B20B20B").mangledNameHash()); ASSERT_EQ(0x0000006eu, ImmutableString("textureGrad(00d20B10B10B").mangledNameHash()); - ASSERT_EQ(0x00000244u, ImmutableString("textureGrad(00e30B20B20B").mangledNameHash()); - ASSERT_EQ(0x0000033du, ImmutableString("textureGrad(00L20B10B10B").mangledNameHash()); - ASSERT_EQ(0x000001a1u, ImmutableString("textureGrad(00U20B10B10B").mangledNameHash()); - ASSERT_EQ(0x000001a9u, ImmutableString("textureGrad(00a20B10B10B").mangledNameHash()); - ASSERT_EQ(0x00000239u, ImmutableString("textureGrad(00f30B10B10B").mangledNameHash()); - ASSERT_EQ(0x0000033fu, ImmutableString("textureProjGrad(00I20B10B10B").mangledNameHash()); - ASSERT_EQ(0x00000332u, ImmutableString("textureProjGrad(00R20B10B10B").mangledNameHash()); - ASSERT_EQ(0x000001c6u, ImmutableString("textureProjGrad(00X20B10B10B").mangledNameHash()); + ASSERT_EQ(0x0000024au, ImmutableString("textureGrad(00e30B20B20B").mangledNameHash()); + ASSERT_EQ(0x00000343u, ImmutableString("textureGrad(00L20B10B10B").mangledNameHash()); + ASSERT_EQ(0x000001a7u, ImmutableString("textureGrad(00U20B10B10B").mangledNameHash()); + ASSERT_EQ(0x000001afu, ImmutableString("textureGrad(00a20B10B10B").mangledNameHash()); + ASSERT_EQ(0x0000023fu, ImmutableString("textureGrad(00f30B10B10B").mangledNameHash()); + ASSERT_EQ(0x00000345u, ImmutableString("textureProjGrad(00I20B10B10B").mangledNameHash()); + ASSERT_EQ(0x00000338u, ImmutableString("textureProjGrad(00R20B10B10B").mangledNameHash()); + ASSERT_EQ(0x000001ccu, ImmutableString("textureProjGrad(00X20B10B10B").mangledNameHash()); ASSERT_EQ(0x0000000cu, ImmutableString("textureProjGrad(00I30B10B10B").mangledNameHash()); - ASSERT_EQ(0x000000fau, ImmutableString("textureProjGrad(00R30B10B10B").mangledNameHash()); - ASSERT_EQ(0x000003a4u, ImmutableString("textureProjGrad(00X30B10B10B").mangledNameHash()); - ASSERT_EQ(0x0000013fu, ImmutableString("textureProjGrad(00J30B20B20B").mangledNameHash()); + ASSERT_EQ(0x000000feu, ImmutableString("textureProjGrad(00R30B10B10B").mangledNameHash()); + ASSERT_EQ(0x000003aau, ImmutableString("textureProjGrad(00X30B10B10B").mangledNameHash()); + ASSERT_EQ(0x00000144u, ImmutableString("textureProjGrad(00J30B20B20B").mangledNameHash()); ASSERT_EQ(0x00000052u, ImmutableString("textureProjGrad(00S30B20B20B").mangledNameHash()); ASSERT_EQ(0x0000001bu, ImmutableString("textureProjGrad(00Y30B20B20B").mangledNameHash()); - ASSERT_EQ(0x000001b9u, ImmutableString("textureProjGrad(00d30B10B10B").mangledNameHash()); - ASSERT_EQ(0x000001e0u, ImmutableString("textureSize(00P").mangledNameHash()); - ASSERT_EQ(0x000002b0u, ImmutableString("textureSize(00V").mangledNameHash()); - ASSERT_EQ(0x00000210u, ImmutableString("textureSize(00b").mangledNameHash()); - ASSERT_EQ(0x00000227u, ImmutableString("textureSize(00Q").mangledNameHash()); - ASSERT_EQ(0x0000022bu, ImmutableString("textureSize(00W").mangledNameHash()); - ASSERT_EQ(0x0000020fu, ImmutableString("textureSize(00c").mangledNameHash()); + ASSERT_EQ(0x000001bfu, ImmutableString("textureProjGrad(00d30B10B10B").mangledNameHash()); + ASSERT_EQ(0x000001e6u, ImmutableString("textureSize(00P").mangledNameHash()); + ASSERT_EQ(0x000002b6u, ImmutableString("textureSize(00V").mangledNameHash()); + ASSERT_EQ(0x00000216u, ImmutableString("textureSize(00b").mangledNameHash()); + ASSERT_EQ(0x0000022du, ImmutableString("textureSize(00Q").mangledNameHash()); + ASSERT_EQ(0x00000231u, ImmutableString("textureSize(00W").mangledNameHash()); + ASSERT_EQ(0x00000215u, ImmutableString("textureSize(00c").mangledNameHash()); ASSERT_EQ(0x00000097u, ImmutableString("texelFetch(00P10D00D").mangledNameHash()); - ASSERT_EQ(0x00000131u, ImmutableString("texelFetch(00V10D00D").mangledNameHash()); - ASSERT_EQ(0x0000028fu, ImmutableString("texelFetch(00b10D00D").mangledNameHash()); - ASSERT_EQ(0x000002c7u, ImmutableString("texelFetch(00Q20D00D").mangledNameHash()); - ASSERT_EQ(0x00000108u, ImmutableString("texelFetch(00W20D00D").mangledNameHash()); - ASSERT_EQ(0x000001d6u, ImmutableString("texelFetch(00c20D00D").mangledNameHash()); - ASSERT_EQ(0x000000b3u, ImmutableString("texture(00I10B00B").mangledNameHash()); + ASSERT_EQ(0x00000135u, ImmutableString("texelFetch(00V10D00D").mangledNameHash()); + ASSERT_EQ(0x00000295u, ImmutableString("texelFetch(00b10D00D").mangledNameHash()); + ASSERT_EQ(0x000002cdu, ImmutableString("texelFetch(00Q20D00D").mangledNameHash()); + ASSERT_EQ(0x0000010cu, ImmutableString("texelFetch(00W20D00D").mangledNameHash()); + ASSERT_EQ(0x000001dcu, ImmutableString("texelFetch(00c20D00D").mangledNameHash()); + ASSERT_EQ(0x000000b4u, ImmutableString("texture(00I10B00B").mangledNameHash()); ASSERT_EQ(0x00000004u, ImmutableString("texture(00R10B00B").mangledNameHash()); ASSERT_EQ(0x00000093u, ImmutableString("texture(00X10B00B").mangledNameHash()); - ASSERT_EQ(0x000001acu, ImmutableString("texture(00J20B00B").mangledNameHash()); - ASSERT_EQ(0x00000152u, ImmutableString("texture(00S20B00B").mangledNameHash()); - ASSERT_EQ(0x00000193u, ImmutableString("texture(00Y20B00B").mangledNameHash()); - ASSERT_EQ(0x000001a4u, ImmutableString("texture(00K20B00B").mangledNameHash()); - ASSERT_EQ(0x000000c9u, ImmutableString("texture(00T20B00B").mangledNameHash()); - ASSERT_EQ(0x0000018au, ImmutableString("texture(00Z20B00B").mangledNameHash()); - ASSERT_EQ(0x000001f8u, ImmutableString("texture(00L20B00B").mangledNameHash()); - ASSERT_EQ(0x00000186u, ImmutableString("texture(00U20B00B").mangledNameHash()); - ASSERT_EQ(0x00000390u, ImmutableString("texture(00a20B00B").mangledNameHash()); - ASSERT_EQ(0x00000388u, ImmutableString("textureProj(00I20B00B").mangledNameHash()); - ASSERT_EQ(0x00000287u, ImmutableString("textureProj(00R20B00B").mangledNameHash()); - ASSERT_EQ(0x000001e9u, ImmutableString("textureProj(00X20B00B").mangledNameHash()); - ASSERT_EQ(0x000000abu, ImmutableString("textureProj(00I30B00B").mangledNameHash()); + ASSERT_EQ(0x000001b2u, ImmutableString("texture(00J20B00B").mangledNameHash()); + ASSERT_EQ(0x00000157u, ImmutableString("texture(00S20B00B").mangledNameHash()); + ASSERT_EQ(0x00000199u, ImmutableString("texture(00Y20B00B").mangledNameHash()); + ASSERT_EQ(0x000001aau, ImmutableString("texture(00K20B00B").mangledNameHash()); + ASSERT_EQ(0x000000ccu, ImmutableString("texture(00T20B00B").mangledNameHash()); + ASSERT_EQ(0x00000190u, ImmutableString("texture(00Z20B00B").mangledNameHash()); + ASSERT_EQ(0x000001feu, ImmutableString("texture(00L20B00B").mangledNameHash()); + ASSERT_EQ(0x0000018cu, ImmutableString("texture(00U20B00B").mangledNameHash()); + ASSERT_EQ(0x00000396u, ImmutableString("texture(00a20B00B").mangledNameHash()); + ASSERT_EQ(0x0000038eu, ImmutableString("textureProj(00I20B00B").mangledNameHash()); + ASSERT_EQ(0x0000028du, ImmutableString("textureProj(00R20B00B").mangledNameHash()); + ASSERT_EQ(0x000001efu, ImmutableString("textureProj(00X20B00B").mangledNameHash()); + ASSERT_EQ(0x000000acu, ImmutableString("textureProj(00I30B00B").mangledNameHash()); ASSERT_EQ(0x00000000u, ImmutableString("textureProj(00R30B00B").mangledNameHash()); - ASSERT_EQ(0x00000202u, ImmutableString("textureProj(00X30B00B").mangledNameHash()); + ASSERT_EQ(0x00000208u, ImmutableString("textureProj(00X30B00B").mangledNameHash()); ASSERT_EQ(0x00000030u, ImmutableString("textureProj(00J30B00B").mangledNameHash()); - ASSERT_EQ(0x00000113u, ImmutableString("textureProj(00S30B00B").mangledNameHash()); - ASSERT_EQ(0x000001b4u, ImmutableString("textureProj(00Y30B00B").mangledNameHash()); - ASSERT_EQ(0x000002adu, ImmutableString("texture(00d20B00B").mangledNameHash()); - ASSERT_EQ(0x00000163u, ImmutableString("texture(00e30B00B").mangledNameHash()); - ASSERT_EQ(0x000002f9u, ImmutableString("textureProj(00d30B00B").mangledNameHash()); - ASSERT_EQ(0x00000391u, ImmutableString("texture(00M10B00B").mangledNameHash()); - ASSERT_EQ(0x00000396u, ImmutableString("textureProj(00M20B00B").mangledNameHash()); - ASSERT_EQ(0x000000b0u, ImmutableString("textureProj(00M30B00B").mangledNameHash()); + ASSERT_EQ(0x00000117u, ImmutableString("textureProj(00S30B00B").mangledNameHash()); + ASSERT_EQ(0x000001bau, ImmutableString("textureProj(00Y30B00B").mangledNameHash()); + ASSERT_EQ(0x000002b3u, ImmutableString("texture(00d20B00B").mangledNameHash()); + ASSERT_EQ(0x00000168u, ImmutableString("texture(00e30B00B").mangledNameHash()); + ASSERT_EQ(0x000002ffu, ImmutableString("textureProj(00d30B00B").mangledNameHash()); + ASSERT_EQ(0x00000397u, ImmutableString("texture(00M10B00B").mangledNameHash()); + ASSERT_EQ(0x0000039cu, ImmutableString("textureProj(00M20B00B").mangledNameHash()); + ASSERT_EQ(0x000000b1u, ImmutableString("textureProj(00M30B00B").mangledNameHash()); ASSERT_EQ(0x00000001u, ImmutableString("texture(00N10B00B").mangledNameHash()); - ASSERT_EQ(0x000002f6u, ImmutableString("textureProj(00N20B00B").mangledNameHash()); + ASSERT_EQ(0x000002fcu, ImmutableString("textureProj(00N20B00B").mangledNameHash()); ASSERT_EQ(0x000000a5u, ImmutableString("textureProj(00N30B00B").mangledNameHash()); - ASSERT_EQ(0x000000a9u, ImmutableString("textureOffset(00I10B10D").mangledNameHash()); - ASSERT_EQ(0x00000264u, ImmutableString("textureOffset(00R10B10D").mangledNameHash()); - ASSERT_EQ(0x00000268u, ImmutableString("textureOffset(00X10B10D").mangledNameHash()); - ASSERT_EQ(0x00000394u, ImmutableString("textureOffset(00J20B20D").mangledNameHash()); - ASSERT_EQ(0x00000382u, ImmutableString("textureOffset(00S20B20D").mangledNameHash()); - ASSERT_EQ(0x000002a1u, ImmutableString("textureOffset(00Y20B20D").mangledNameHash()); + ASSERT_EQ(0x000000aau, ImmutableString("textureOffset(00I10B10D").mangledNameHash()); + ASSERT_EQ(0x0000026au, ImmutableString("textureOffset(00R10B10D").mangledNameHash()); + ASSERT_EQ(0x0000026eu, ImmutableString("textureOffset(00X10B10D").mangledNameHash()); + ASSERT_EQ(0x0000039au, ImmutableString("textureOffset(00J20B20D").mangledNameHash()); + ASSERT_EQ(0x00000388u, ImmutableString("textureOffset(00S20B20D").mangledNameHash()); + ASSERT_EQ(0x000002a7u, ImmutableString("textureOffset(00Y20B20D").mangledNameHash()); ASSERT_EQ(0x0000000fu, ImmutableString("textureOffset(00d20B10D").mangledNameHash()); - ASSERT_EQ(0x000000cau, ImmutableString("textureOffset(00L20B10D").mangledNameHash()); + ASSERT_EQ(0x000000cdu, ImmutableString("textureOffset(00L20B10D").mangledNameHash()); ASSERT_EQ(0x00000070u, ImmutableString("textureOffset(00U20B10D").mangledNameHash()); - ASSERT_EQ(0x000000ebu, ImmutableString("textureOffset(00a20B10D").mangledNameHash()); - ASSERT_EQ(0x000000dcu, ImmutableString("textureProjOffset(00I20B10D").mangledNameHash()); + ASSERT_EQ(0x000000eeu, ImmutableString("textureOffset(00a20B10D").mangledNameHash()); + ASSERT_EQ(0x000000dfu, ImmutableString("textureProjOffset(00I20B10D").mangledNameHash()); ASSERT_EQ(0x000000a2u, ImmutableString("textureProjOffset(00R20B10D").mangledNameHash()); - ASSERT_EQ(0x00000383u, ImmutableString("textureProjOffset(00X20B10D").mangledNameHash()); - ASSERT_EQ(0x0000016eu, ImmutableString("textureProjOffset(00I30B10D").mangledNameHash()); + ASSERT_EQ(0x00000389u, ImmutableString("textureProjOffset(00X20B10D").mangledNameHash()); + ASSERT_EQ(0x00000173u, ImmutableString("textureProjOffset(00I30B10D").mangledNameHash()); ASSERT_EQ(0x0000006fu, ImmutableString("textureProjOffset(00R30B10D").mangledNameHash()); - ASSERT_EQ(0x000002dau, ImmutableString("textureProjOffset(00X30B10D").mangledNameHash()); - ASSERT_EQ(0x00000362u, ImmutableString("textureProjOffset(00J30B20D").mangledNameHash()); - ASSERT_EQ(0x000000d0u, ImmutableString("textureProjOffset(00S30B20D").mangledNameHash()); - ASSERT_EQ(0x00000323u, ImmutableString("textureProjOffset(00Y30B20D").mangledNameHash()); - ASSERT_EQ(0x00000366u, ImmutableString("textureProjOffset(00d30B10D").mangledNameHash()); + ASSERT_EQ(0x000002e0u, ImmutableString("textureProjOffset(00X30B10D").mangledNameHash()); + ASSERT_EQ(0x00000368u, ImmutableString("textureProjOffset(00J30B20D").mangledNameHash()); + ASSERT_EQ(0x000000d3u, ImmutableString("textureProjOffset(00S30B20D").mangledNameHash()); + ASSERT_EQ(0x00000329u, ImmutableString("textureProjOffset(00Y30B20D").mangledNameHash()); + ASSERT_EQ(0x0000036cu, ImmutableString("textureProjOffset(00d30B10D").mangledNameHash()); ASSERT_EQ(0x0000006bu, ImmutableString("textureLodOffset(00I10B00B10D").mangledNameHash()); ASSERT_EQ(0x0000009au, ImmutableString("textureLodOffset(00R10B00B10D").mangledNameHash()); - ASSERT_EQ(0x000000c8u, ImmutableString("textureLodOffset(00X10B00B10D").mangledNameHash()); - ASSERT_EQ(0x00000241u, ImmutableString("textureLodOffset(00J20B00B20D").mangledNameHash()); + ASSERT_EQ(0x000000cbu, ImmutableString("textureLodOffset(00X10B00B10D").mangledNameHash()); + ASSERT_EQ(0x00000247u, ImmutableString("textureLodOffset(00J20B00B20D").mangledNameHash()); ASSERT_EQ(0x0000005fu, ImmutableString("textureLodOffset(00S20B00B20D").mangledNameHash()); - ASSERT_EQ(0x00000164u, ImmutableString("textureLodOffset(00Y20B00B20D").mangledNameHash()); - ASSERT_EQ(0x000001c3u, ImmutableString("textureLodOffset(00d20B00B10D").mangledNameHash()); - ASSERT_EQ(0x00000350u, ImmutableString("textureLodOffset(00L20B00B10D").mangledNameHash()); - ASSERT_EQ(0x00000286u, ImmutableString("textureLodOffset(00U20B00B10D").mangledNameHash()); + ASSERT_EQ(0x00000169u, ImmutableString("textureLodOffset(00Y20B00B20D").mangledNameHash()); + ASSERT_EQ(0x000001c9u, ImmutableString("textureLodOffset(00d20B00B10D").mangledNameHash()); + ASSERT_EQ(0x00000356u, ImmutableString("textureLodOffset(00L20B00B10D").mangledNameHash()); + ASSERT_EQ(0x0000028cu, ImmutableString("textureLodOffset(00U20B00B10D").mangledNameHash()); ASSERT_EQ(0x00000036u, ImmutableString("textureLodOffset(00a20B00B10D").mangledNameHash()); - ASSERT_EQ(0x00000330u, ImmutableString("textureProjLodOffset(00I20B00B10D").mangledNameHash()); - ASSERT_EQ(0x00000136u, ImmutableString("textureProjLodOffset(00R20B00B10D").mangledNameHash()); - ASSERT_EQ(0x0000017eu, ImmutableString("textureProjLodOffset(00X20B00B10D").mangledNameHash()); - ASSERT_EQ(0x00000338u, ImmutableString("textureProjLodOffset(00I30B00B10D").mangledNameHash()); - ASSERT_EQ(0x000001e2u, ImmutableString("textureProjLodOffset(00R30B00B10D").mangledNameHash()); - ASSERT_EQ(0x00000356u, ImmutableString("textureProjLodOffset(00X30B00B10D").mangledNameHash()); - ASSERT_EQ(0x000001cdu, ImmutableString("textureProjLodOffset(00J30B00B20D").mangledNameHash()); - ASSERT_EQ(0x00000181u, ImmutableString("textureProjLodOffset(00S30B00B20D").mangledNameHash()); - ASSERT_EQ(0x000001c0u, ImmutableString("textureProjLodOffset(00Y30B00B20D").mangledNameHash()); - ASSERT_EQ(0x00000335u, ImmutableString("textureProjLodOffset(00d30B00B10D").mangledNameHash()); - ASSERT_EQ(0x0000012fu, ImmutableString("texelFetchOffset(00I10D00D10D").mangledNameHash()); - ASSERT_EQ(0x000000c2u, ImmutableString("texelFetchOffset(00R10D00D10D").mangledNameHash()); - ASSERT_EQ(0x000002abu, ImmutableString("texelFetchOffset(00X10D00D10D").mangledNameHash()); - ASSERT_EQ(0x00000207u, ImmutableString("texelFetchOffset(00J20D00D20D").mangledNameHash()); - ASSERT_EQ(0x00000120u, ImmutableString("texelFetchOffset(00S20D00D20D").mangledNameHash()); + ASSERT_EQ(0x00000336u, ImmutableString("textureProjLodOffset(00I20B00B10D").mangledNameHash()); + ASSERT_EQ(0x0000013bu, ImmutableString("textureProjLodOffset(00R20B00B10D").mangledNameHash()); + ASSERT_EQ(0x00000183u, ImmutableString("textureProjLodOffset(00X20B00B10D").mangledNameHash()); + ASSERT_EQ(0x0000033eu, ImmutableString("textureProjLodOffset(00I30B00B10D").mangledNameHash()); + ASSERT_EQ(0x000001e8u, ImmutableString("textureProjLodOffset(00R30B00B10D").mangledNameHash()); + ASSERT_EQ(0x0000035cu, ImmutableString("textureProjLodOffset(00X30B00B10D").mangledNameHash()); + ASSERT_EQ(0x000001d3u, ImmutableString("textureProjLodOffset(00J30B00B20D").mangledNameHash()); + ASSERT_EQ(0x00000186u, ImmutableString("textureProjLodOffset(00S30B00B20D").mangledNameHash()); + ASSERT_EQ(0x000001c6u, ImmutableString("textureProjLodOffset(00Y30B00B20D").mangledNameHash()); + ASSERT_EQ(0x0000033bu, ImmutableString("textureProjLodOffset(00d30B00B10D").mangledNameHash()); + ASSERT_EQ(0x00000133u, ImmutableString("texelFetchOffset(00I10D00D10D").mangledNameHash()); + ASSERT_EQ(0x000000c5u, ImmutableString("texelFetchOffset(00R10D00D10D").mangledNameHash()); + ASSERT_EQ(0x000002b1u, ImmutableString("texelFetchOffset(00X10D00D10D").mangledNameHash()); + ASSERT_EQ(0x0000020du, ImmutableString("texelFetchOffset(00J20D00D20D").mangledNameHash()); + ASSERT_EQ(0x00000124u, ImmutableString("texelFetchOffset(00S20D00D20D").mangledNameHash()); ASSERT_EQ(0x00000037u, ImmutableString("texelFetchOffset(00Y20D00D20D").mangledNameHash()); - ASSERT_EQ(0x0000025bu, ImmutableString("texelFetchOffset(00L20D00D10D").mangledNameHash()); - ASSERT_EQ(0x000001bfu, ImmutableString("texelFetchOffset(00U20D00D10D").mangledNameHash()); - ASSERT_EQ(0x00000127u, ImmutableString("texelFetchOffset(00a20D00D10D").mangledNameHash()); - ASSERT_EQ(0x0000023cu, ImmutableString("textureGradOffset(00I10B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x000002deu, ImmutableString("textureGradOffset(00R10B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000261u, ImmutableString("texelFetchOffset(00L20D00D10D").mangledNameHash()); + ASSERT_EQ(0x000001c5u, ImmutableString("texelFetchOffset(00U20D00D10D").mangledNameHash()); + ASSERT_EQ(0x0000012bu, ImmutableString("texelFetchOffset(00a20D00D10D").mangledNameHash()); + ASSERT_EQ(0x00000242u, ImmutableString("textureGradOffset(00I10B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x000002e4u, ImmutableString("textureGradOffset(00R10B10B10B10D").mangledNameHash()); ASSERT_EQ(0x00000084u, ImmutableString("textureGradOffset(00X10B10B10B10D").mangledNameHash()); ASSERT_EQ(0x00000065u, ImmutableString("textureGradOffset(00J20B20B20B20D").mangledNameHash()); ASSERT_EQ(0x000000a0u, ImmutableString("textureGradOffset(00S20B20B20B20D").mangledNameHash()); - ASSERT_EQ(0x00000231u, ImmutableString("textureGradOffset(00Y20B20B20B20D").mangledNameHash()); - ASSERT_EQ(0x000001e1u, ImmutableString("textureGradOffset(00d20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000326u, ImmutableString("textureGradOffset(00L20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000250u, ImmutableString("textureGradOffset(00U20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x0000018bu, ImmutableString("textureGradOffset(00a20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000213u, ImmutableString("textureGradOffset(00f30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000370u, - ImmutableString("textureProjGradOffset(00I20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000057u, - ImmutableString("textureProjGradOffset(00R20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000128u, - ImmutableString("textureProjGradOffset(00X20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000266u, - ImmutableString("textureProjGradOffset(00I30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000398u, - ImmutableString("textureProjGradOffset(00R30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000100u, - ImmutableString("textureProjGradOffset(00X30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x000003a2u, - ImmutableString("textureProjGradOffset(00J30B20B20B20D").mangledNameHash()); - ASSERT_EQ(0x00000117u, - ImmutableString("textureProjGradOffset(00S30B20B20B20D").mangledNameHash()); - ASSERT_EQ(0x0000035fu, - ImmutableString("textureProjGradOffset(00Y30B20B20B20D").mangledNameHash()); - ASSERT_EQ(0x00000257u, - ImmutableString("textureProjGradOffset(00d30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000101u, ImmutableString("textureOffset(00I10B10D00B").mangledNameHash()); - ASSERT_EQ(0x00000243u, ImmutableString("textureOffset(00R10B10D00B").mangledNameHash()); - ASSERT_EQ(0x000002b4u, ImmutableString("textureOffset(00X10B10D00B").mangledNameHash()); - ASSERT_EQ(0x000000ccu, ImmutableString("textureOffset(00J20B20D00B").mangledNameHash()); - ASSERT_EQ(0x0000026cu, ImmutableString("textureOffset(00S20B20D00B").mangledNameHash()); + ASSERT_EQ(0x00000237u, ImmutableString("textureGradOffset(00Y20B20B20B20D").mangledNameHash()); + ASSERT_EQ(0x000001e7u, ImmutableString("textureGradOffset(00d20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x0000032cu, ImmutableString("textureGradOffset(00L20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000256u, ImmutableString("textureGradOffset(00U20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000191u, ImmutableString("textureGradOffset(00a20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000219u, ImmutableString("textureGradOffset(00f30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000376u, ImmutableString("textureProjGradOffset(00I20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000057u, ImmutableString("textureProjGradOffset(00R20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x0000012cu, ImmutableString("textureProjGradOffset(00X20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x0000026cu, ImmutableString("textureProjGradOffset(00I30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x0000039eu, ImmutableString("textureProjGradOffset(00R30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000104u, ImmutableString("textureProjGradOffset(00X30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x000003a8u, ImmutableString("textureProjGradOffset(00J30B20B20B20D").mangledNameHash()); + ASSERT_EQ(0x0000011bu, ImmutableString("textureProjGradOffset(00S30B20B20B20D").mangledNameHash()); + ASSERT_EQ(0x00000365u, ImmutableString("textureProjGradOffset(00Y30B20B20B20D").mangledNameHash()); + ASSERT_EQ(0x0000025du, ImmutableString("textureProjGradOffset(00d30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000105u, ImmutableString("textureOffset(00I10B10D00B").mangledNameHash()); + ASSERT_EQ(0x00000249u, ImmutableString("textureOffset(00R10B10D00B").mangledNameHash()); + ASSERT_EQ(0x000002bau, ImmutableString("textureOffset(00X10B10D00B").mangledNameHash()); + ASSERT_EQ(0x000000cfu, ImmutableString("textureOffset(00J20B20D00B").mangledNameHash()); + ASSERT_EQ(0x00000272u, ImmutableString("textureOffset(00S20B20D00B").mangledNameHash()); ASSERT_EQ(0x0000009fu, ImmutableString("textureOffset(00Y20B20D00B").mangledNameHash()); - ASSERT_EQ(0x0000026au, ImmutableString("textureOffset(00d20B10D00B").mangledNameHash()); - ASSERT_EQ(0x000000c7u, ImmutableString("textureOffset(00L20B10D00B").mangledNameHash()); - ASSERT_EQ(0x000001aau, ImmutableString("textureOffset(00U20B10D00B").mangledNameHash()); - ASSERT_EQ(0x00000217u, ImmutableString("textureOffset(00a20B10D00B").mangledNameHash()); + ASSERT_EQ(0x00000270u, ImmutableString("textureOffset(00d20B10D00B").mangledNameHash()); + ASSERT_EQ(0x000000cau, ImmutableString("textureOffset(00L20B10D00B").mangledNameHash()); + ASSERT_EQ(0x000001b0u, ImmutableString("textureOffset(00U20B10D00B").mangledNameHash()); + ASSERT_EQ(0x0000021du, ImmutableString("textureOffset(00a20B10D00B").mangledNameHash()); ASSERT_EQ(0x00000079u, ImmutableString("textureProjOffset(00I20B10D00B").mangledNameHash()); - ASSERT_EQ(0x0000026fu, ImmutableString("textureProjOffset(00R20B10D00B").mangledNameHash()); - ASSERT_EQ(0x000000fdu, ImmutableString("textureProjOffset(00X20B10D00B").mangledNameHash()); - ASSERT_EQ(0x00000347u, ImmutableString("textureProjOffset(00I30B10D00B").mangledNameHash()); - ASSERT_EQ(0x0000038au, ImmutableString("textureProjOffset(00R30B10D00B").mangledNameHash()); - ASSERT_EQ(0x0000039au, ImmutableString("textureProjOffset(00X30B10D00B").mangledNameHash()); + ASSERT_EQ(0x00000275u, ImmutableString("textureProjOffset(00R20B10D00B").mangledNameHash()); + ASSERT_EQ(0x00000101u, ImmutableString("textureProjOffset(00X20B10D00B").mangledNameHash()); + ASSERT_EQ(0x0000034du, ImmutableString("textureProjOffset(00I30B10D00B").mangledNameHash()); + ASSERT_EQ(0x00000390u, ImmutableString("textureProjOffset(00R30B10D00B").mangledNameHash()); + ASSERT_EQ(0x000003a0u, ImmutableString("textureProjOffset(00X30B10D00B").mangledNameHash()); ASSERT_EQ(0x00000048u, ImmutableString("textureProjOffset(00J30B20D00B").mangledNameHash()); ASSERT_EQ(0x0000002bu, ImmutableString("textureProjOffset(00S30B20D00B").mangledNameHash()); - ASSERT_EQ(0x000002bbu, ImmutableString("textureProjOffset(00Y30B20D00B").mangledNameHash()); - ASSERT_EQ(0x00000364u, ImmutableString("textureProjOffset(00d30B10D00B").mangledNameHash()); + ASSERT_EQ(0x000002c1u, ImmutableString("textureProjOffset(00Y30B20D00B").mangledNameHash()); + ASSERT_EQ(0x0000036au, ImmutableString("textureProjOffset(00d30B10D00B").mangledNameHash()); ASSERT_EQ(0x00000088u, ImmutableString("texture(00M10B").mangledNameHash()); - ASSERT_EQ(0x000000b2u, ImmutableString("textureProj(00M20B").mangledNameHash()); - ASSERT_EQ(0x0000030cu, ImmutableString("textureProj(00M30B").mangledNameHash()); - ASSERT_EQ(0x00000318u, ImmutableString("textureSize(00M00D").mangledNameHash()); + ASSERT_EQ(0x000000b3u, ImmutableString("textureProj(00M20B").mangledNameHash()); + ASSERT_EQ(0x00000312u, ImmutableString("textureProj(00M30B").mangledNameHash()); + ASSERT_EQ(0x0000031eu, ImmutableString("textureSize(00M00D").mangledNameHash()); ASSERT_EQ(0x0000009cu, ImmutableString("texelFetch(00M10D00D").mangledNameHash()); - ASSERT_EQ(0x00000121u, ImmutableString("texture(00N10B").mangledNameHash()); - ASSERT_EQ(0x0000034du, ImmutableString("textureProj(00N20B").mangledNameHash()); - ASSERT_EQ(0x00000258u, ImmutableString("textureProj(00N30B").mangledNameHash()); + ASSERT_EQ(0x00000125u, ImmutableString("texture(00N10B").mangledNameHash()); + ASSERT_EQ(0x00000353u, ImmutableString("textureProj(00N20B").mangledNameHash()); + ASSERT_EQ(0x0000025eu, ImmutableString("textureProj(00N30B").mangledNameHash()); ASSERT_EQ(0x0000007eu, ImmutableString("rgb_2_yuv(20B00H").mangledNameHash()); - ASSERT_EQ(0x000001a6u, ImmutableString("yuv_2_rgb(20B00H").mangledNameHash()); - ASSERT_EQ(0x00000206u, ImmutableString("textureSize(00N00D").mangledNameHash()); + ASSERT_EQ(0x000001acu, ImmutableString("yuv_2_rgb(20B00H").mangledNameHash()); + ASSERT_EQ(0x0000020cu, ImmutableString("textureSize(00N00D").mangledNameHash()); ASSERT_EQ(0x0000003du, ImmutableString("texelFetch(00N10D00D").mangledNameHash()); - ASSERT_EQ(0x0000023eu, ImmutableString("textureGather(00I10B").mangledNameHash()); - ASSERT_EQ(0x00000304u, ImmutableString("textureGather(00R10B").mangledNameHash()); - ASSERT_EQ(0x00000218u, ImmutableString("textureGather(00X10B").mangledNameHash()); - ASSERT_EQ(0x00000130u, ImmutableString("textureGather(00I10B00D").mangledNameHash()); - ASSERT_EQ(0x000002c0u, ImmutableString("textureGather(00R10B00D").mangledNameHash()); - ASSERT_EQ(0x000001beu, ImmutableString("textureGather(00X10B00D").mangledNameHash()); - ASSERT_EQ(0x00000183u, ImmutableString("textureGather(00L20B").mangledNameHash()); - ASSERT_EQ(0x000002c3u, ImmutableString("textureGather(00U20B").mangledNameHash()); - ASSERT_EQ(0x0000021au, ImmutableString("textureGather(00a20B").mangledNameHash()); - ASSERT_EQ(0x00000116u, ImmutableString("textureGather(00L20B00D").mangledNameHash()); - ASSERT_EQ(0x000002f4u, ImmutableString("textureGather(00U20B00D").mangledNameHash()); - ASSERT_EQ(0x000003a1u, ImmutableString("textureGather(00a20B00D").mangledNameHash()); - ASSERT_EQ(0x000000d5u, ImmutableString("textureGather(00K20B").mangledNameHash()); - ASSERT_EQ(0x000003a0u, ImmutableString("textureGather(00T20B").mangledNameHash()); - ASSERT_EQ(0x00000267u, ImmutableString("textureGather(00Z20B").mangledNameHash()); + ASSERT_EQ(0x00000244u, ImmutableString("textureGather(00I10B").mangledNameHash()); + ASSERT_EQ(0x0000030au, ImmutableString("textureGather(00R10B").mangledNameHash()); + ASSERT_EQ(0x0000021eu, ImmutableString("textureGather(00X10B").mangledNameHash()); + ASSERT_EQ(0x00000134u, ImmutableString("textureGather(00I10B00D").mangledNameHash()); + ASSERT_EQ(0x000002c6u, ImmutableString("textureGather(00R10B00D").mangledNameHash()); + ASSERT_EQ(0x000001c4u, ImmutableString("textureGather(00X10B00D").mangledNameHash()); + ASSERT_EQ(0x00000188u, ImmutableString("textureGather(00L20B").mangledNameHash()); + ASSERT_EQ(0x000002c9u, ImmutableString("textureGather(00U20B").mangledNameHash()); + ASSERT_EQ(0x00000220u, ImmutableString("textureGather(00a20B").mangledNameHash()); + ASSERT_EQ(0x0000011au, ImmutableString("textureGather(00L20B00D").mangledNameHash()); + ASSERT_EQ(0x000002fau, ImmutableString("textureGather(00U20B00D").mangledNameHash()); + ASSERT_EQ(0x000003a7u, ImmutableString("textureGather(00a20B00D").mangledNameHash()); + ASSERT_EQ(0x000000d8u, ImmutableString("textureGather(00K20B").mangledNameHash()); + ASSERT_EQ(0x000003a6u, ImmutableString("textureGather(00T20B").mangledNameHash()); + ASSERT_EQ(0x0000026du, ImmutableString("textureGather(00Z20B").mangledNameHash()); ASSERT_EQ(0x00000014u, ImmutableString("textureGather(00K20B00D").mangledNameHash()); - ASSERT_EQ(0x0000034cu, ImmutableString("textureGather(00T20B00D").mangledNameHash()); - ASSERT_EQ(0x00000303u, ImmutableString("textureGather(00Z20B00D").mangledNameHash()); - ASSERT_EQ(0x00000176u, ImmutableString("textureGather(00d10B").mangledNameHash()); - ASSERT_EQ(0x0000037bu, ImmutableString("textureGather(00d10B00B").mangledNameHash()); - ASSERT_EQ(0x00000139u, ImmutableString("textureGather(00f20B").mangledNameHash()); - ASSERT_EQ(0x000001a7u, ImmutableString("textureGather(00f20B00B").mangledNameHash()); - ASSERT_EQ(0x00000340u, ImmutableString("textureGather(00e20B").mangledNameHash()); - ASSERT_EQ(0x00000153u, ImmutableString("textureGather(00e20B00B").mangledNameHash()); - ASSERT_EQ(0x000000c6u, ImmutableString("textureGatherOffset(00I10B10D").mangledNameHash()); + ASSERT_EQ(0x00000352u, ImmutableString("textureGather(00T20B00D").mangledNameHash()); + ASSERT_EQ(0x00000309u, ImmutableString("textureGather(00Z20B00D").mangledNameHash()); + ASSERT_EQ(0x0000017bu, ImmutableString("textureGather(00d10B").mangledNameHash()); + ASSERT_EQ(0x00000381u, ImmutableString("textureGather(00d10B00B").mangledNameHash()); + ASSERT_EQ(0x0000013eu, ImmutableString("textureGather(00f20B").mangledNameHash()); + ASSERT_EQ(0x000001adu, ImmutableString("textureGather(00f20B00B").mangledNameHash()); + ASSERT_EQ(0x00000346u, ImmutableString("textureGather(00e20B").mangledNameHash()); + ASSERT_EQ(0x00000158u, ImmutableString("textureGather(00e20B00B").mangledNameHash()); + ASSERT_EQ(0x000000c9u, ImmutableString("textureGatherOffset(00I10B10D").mangledNameHash()); ASSERT_EQ(0x00000060u, ImmutableString("textureGatherOffset(00R10B10D").mangledNameHash()); - ASSERT_EQ(0x000002eeu, ImmutableString("textureGatherOffset(00X10B10D").mangledNameHash()); - ASSERT_EQ(0x000001bdu, ImmutableString("textureGatherOffset(00I10B10D00D").mangledNameHash()); - ASSERT_EQ(0x000001e5u, ImmutableString("textureGatherOffset(00R10B10D00D").mangledNameHash()); - ASSERT_EQ(0x0000035cu, ImmutableString("textureGatherOffset(00X10B10D00D").mangledNameHash()); - ASSERT_EQ(0x00000254u, ImmutableString("textureGatherOffset(00L20B10D").mangledNameHash()); - ASSERT_EQ(0x000002bcu, ImmutableString("textureGatherOffset(00U20B10D").mangledNameHash()); - ASSERT_EQ(0x00000238u, ImmutableString("textureGatherOffset(00a20B10D").mangledNameHash()); + ASSERT_EQ(0x000002f4u, ImmutableString("textureGatherOffset(00X10B10D").mangledNameHash()); + ASSERT_EQ(0x000001c3u, ImmutableString("textureGatherOffset(00I10B10D00D").mangledNameHash()); + ASSERT_EQ(0x000001ebu, ImmutableString("textureGatherOffset(00R10B10D00D").mangledNameHash()); + ASSERT_EQ(0x00000362u, ImmutableString("textureGatherOffset(00X10B10D00D").mangledNameHash()); + ASSERT_EQ(0x0000025au, ImmutableString("textureGatherOffset(00L20B10D").mangledNameHash()); + ASSERT_EQ(0x000002c2u, ImmutableString("textureGatherOffset(00U20B10D").mangledNameHash()); + ASSERT_EQ(0x0000023eu, ImmutableString("textureGatherOffset(00a20B10D").mangledNameHash()); ASSERT_EQ(0x00000022u, ImmutableString("textureGatherOffset(00L20B10D00D").mangledNameHash()); - ASSERT_EQ(0x000000e3u, ImmutableString("textureGatherOffset(00U20B10D00D").mangledNameHash()); - ASSERT_EQ(0x000000c4u, ImmutableString("textureGatherOffset(00a20B10D00D").mangledNameHash()); - ASSERT_EQ(0x0000021du, ImmutableString("textureGatherOffset(00d10B00B10D").mangledNameHash()); - ASSERT_EQ(0x00000293u, ImmutableString("textureGatherOffset(00f20B00B10D").mangledNameHash()); - ASSERT_EQ(0x000000cfu, ImmutableString("atomicCounter(00G").mangledNameHash()); - ASSERT_EQ(0x00000351u, ImmutableString("atomicCounterIncrement(00G").mangledNameHash()); - ASSERT_EQ(0x0000032bu, ImmutableString("atomicCounterDecrement(00G").mangledNameHash()); - ASSERT_EQ(0x00000245u, ImmutableString("atomicAdd(00E00E").mangledNameHash()); + ASSERT_EQ(0x000000e6u, ImmutableString("textureGatherOffset(00U20B10D00D").mangledNameHash()); + ASSERT_EQ(0x000000c7u, ImmutableString("textureGatherOffset(00a20B10D00D").mangledNameHash()); + ASSERT_EQ(0x00000223u, ImmutableString("textureGatherOffset(00d10B00B10D").mangledNameHash()); + ASSERT_EQ(0x00000299u, ImmutableString("textureGatherOffset(00f20B00B10D").mangledNameHash()); + ASSERT_EQ(0x000000d2u, ImmutableString("atomicCounter(00G").mangledNameHash()); + ASSERT_EQ(0x00000357u, ImmutableString("atomicCounterIncrement(00G").mangledNameHash()); + ASSERT_EQ(0x00000331u, ImmutableString("atomicCounterDecrement(00G").mangledNameHash()); + ASSERT_EQ(0x0000024bu, ImmutableString("atomicAdd(00E00E").mangledNameHash()); ASSERT_EQ(0x0000003eu, ImmutableString("atomicAdd(00D00D").mangledNameHash()); - ASSERT_EQ(0x0000014fu, ImmutableString("atomicMin(00E00E").mangledNameHash()); - ASSERT_EQ(0x00000377u, ImmutableString("atomicMin(00D00D").mangledNameHash()); - ASSERT_EQ(0x00000375u, ImmutableString("atomicMax(00E00E").mangledNameHash()); - ASSERT_EQ(0x000000b1u, ImmutableString("atomicMax(00D00D").mangledNameHash()); - ASSERT_EQ(0x000000bdu, ImmutableString("atomicAnd(00E00E").mangledNameHash()); + ASSERT_EQ(0x00000154u, ImmutableString("atomicMin(00E00E").mangledNameHash()); + ASSERT_EQ(0x0000037du, ImmutableString("atomicMin(00D00D").mangledNameHash()); + ASSERT_EQ(0x0000037bu, ImmutableString("atomicMax(00E00E").mangledNameHash()); + ASSERT_EQ(0x000000b2u, ImmutableString("atomicMax(00D00D").mangledNameHash()); + ASSERT_EQ(0x000000c0u, ImmutableString("atomicAnd(00E00E").mangledNameHash()); ASSERT_EQ(0x00000076u, ImmutableString("atomicAnd(00D00D").mangledNameHash()); - ASSERT_EQ(0x000000aeu, ImmutableString("atomicOr(00E00E").mangledNameHash()); - ASSERT_EQ(0x000003a7u, ImmutableString("atomicOr(00D00D").mangledNameHash()); + ASSERT_EQ(0x000000afu, ImmutableString("atomicOr(00E00E").mangledNameHash()); + ASSERT_EQ(0x000003adu, ImmutableString("atomicOr(00D00D").mangledNameHash()); ASSERT_EQ(0x000000a1u, ImmutableString("atomicXor(00E00E").mangledNameHash()); ASSERT_EQ(0x00000069u, ImmutableString("atomicXor(00D00D").mangledNameHash()); - ASSERT_EQ(0x000000aau, ImmutableString("atomicExchange(00E00E").mangledNameHash()); - ASSERT_EQ(0x000001e4u, ImmutableString("atomicExchange(00D00D").mangledNameHash()); - ASSERT_EQ(0x00000322u, ImmutableString("atomicCompSwap(00E00E00E").mangledNameHash()); - ASSERT_EQ(0x000001fcu, ImmutableString("atomicCompSwap(00D00D00D").mangledNameHash()); - ASSERT_EQ(0x0000019du, ImmutableString("imageSize(00y").mangledNameHash()); - ASSERT_EQ(0x0000019fu, ImmutableString("imageSize(00z").mangledNameHash()); - ASSERT_EQ(0x0000028du, ImmutableString("imageSize(01A").mangledNameHash()); - ASSERT_EQ(0x00000223u, ImmutableString("imageSize(01B").mangledNameHash()); - ASSERT_EQ(0x000002dbu, ImmutableString("imageSize(01C").mangledNameHash()); - ASSERT_EQ(0x00000299u, ImmutableString("imageSize(01D").mangledNameHash()); - ASSERT_EQ(0x00000289u, ImmutableString("imageSize(01E").mangledNameHash()); - ASSERT_EQ(0x00000290u, ImmutableString("imageSize(01F").mangledNameHash()); - ASSERT_EQ(0x000002dfu, ImmutableString("imageSize(01G").mangledNameHash()); - ASSERT_EQ(0x000002d4u, ImmutableString("imageSize(01H").mangledNameHash()); - ASSERT_EQ(0x000002d5u, ImmutableString("imageSize(01I").mangledNameHash()); - ASSERT_EQ(0x000002d3u, ImmutableString("imageSize(01J").mangledNameHash()); - ASSERT_EQ(0x00000262u, ImmutableString("imageLoad(00y10D").mangledNameHash()); - ASSERT_EQ(0x000001f4u, ImmutableString("imageLoad(00z10D").mangledNameHash()); + ASSERT_EQ(0x000000abu, ImmutableString("atomicExchange(00E00E").mangledNameHash()); + ASSERT_EQ(0x000001eau, ImmutableString("atomicExchange(00D00D").mangledNameHash()); + ASSERT_EQ(0x00000328u, ImmutableString("atomicCompSwap(00E00E00E").mangledNameHash()); + ASSERT_EQ(0x00000202u, ImmutableString("atomicCompSwap(00D00D00D").mangledNameHash()); + ASSERT_EQ(0x000001a3u, ImmutableString("imageSize(00y").mangledNameHash()); + ASSERT_EQ(0x000001a5u, ImmutableString("imageSize(00z").mangledNameHash()); + ASSERT_EQ(0x00000293u, ImmutableString("imageSize(01A").mangledNameHash()); + ASSERT_EQ(0x00000229u, ImmutableString("imageSize(01B").mangledNameHash()); + ASSERT_EQ(0x000002e1u, ImmutableString("imageSize(01C").mangledNameHash()); + ASSERT_EQ(0x0000029fu, ImmutableString("imageSize(01D").mangledNameHash()); + ASSERT_EQ(0x0000028fu, ImmutableString("imageSize(01E").mangledNameHash()); + ASSERT_EQ(0x00000296u, ImmutableString("imageSize(01F").mangledNameHash()); + ASSERT_EQ(0x000002e5u, ImmutableString("imageSize(01G").mangledNameHash()); + ASSERT_EQ(0x000002dau, ImmutableString("imageSize(01H").mangledNameHash()); + ASSERT_EQ(0x000002dbu, ImmutableString("imageSize(01I").mangledNameHash()); + ASSERT_EQ(0x000002d9u, ImmutableString("imageSize(01J").mangledNameHash()); + ASSERT_EQ(0x00000268u, ImmutableString("imageLoad(00y10D").mangledNameHash()); + ASSERT_EQ(0x000001fau, ImmutableString("imageLoad(00z10D").mangledNameHash()); ASSERT_EQ(0x00000058u, ImmutableString("imageLoad(01A10D").mangledNameHash()); - ASSERT_EQ(0x000002f8u, ImmutableString("imageLoad(01B20D").mangledNameHash()); - ASSERT_EQ(0x000002d2u, ImmutableString("imageLoad(01C20D").mangledNameHash()); - ASSERT_EQ(0x00000355u, ImmutableString("imageLoad(01D20D").mangledNameHash()); - ASSERT_EQ(0x000002f2u, ImmutableString("imageLoad(01E20D").mangledNameHash()); + ASSERT_EQ(0x000002feu, ImmutableString("imageLoad(01B20D").mangledNameHash()); + ASSERT_EQ(0x000002d8u, ImmutableString("imageLoad(01C20D").mangledNameHash()); + ASSERT_EQ(0x0000035bu, ImmutableString("imageLoad(01D20D").mangledNameHash()); + ASSERT_EQ(0x000002f8u, ImmutableString("imageLoad(01E20D").mangledNameHash()); ASSERT_EQ(0x0000003au, ImmutableString("imageLoad(01F20D").mangledNameHash()); - ASSERT_EQ(0x000001fau, ImmutableString("imageLoad(01G20D").mangledNameHash()); - ASSERT_EQ(0x000000d4u, ImmutableString("imageLoad(01H20D").mangledNameHash()); - ASSERT_EQ(0x000000d1u, ImmutableString("imageLoad(01I20D").mangledNameHash()); - ASSERT_EQ(0x0000020au, ImmutableString("imageLoad(01J20D").mangledNameHash()); - ASSERT_EQ(0x000001e6u, ImmutableString("imageStore(00y10D30B").mangledNameHash()); - ASSERT_EQ(0x000000f9u, ImmutableString("imageStore(00z10D30D").mangledNameHash()); - ASSERT_EQ(0x00000118u, ImmutableString("imageStore(01A10D30E").mangledNameHash()); + ASSERT_EQ(0x00000200u, ImmutableString("imageLoad(01G20D").mangledNameHash()); + ASSERT_EQ(0x000000d7u, ImmutableString("imageLoad(01H20D").mangledNameHash()); + ASSERT_EQ(0x000000d4u, ImmutableString("imageLoad(01I20D").mangledNameHash()); + ASSERT_EQ(0x00000210u, ImmutableString("imageLoad(01J20D").mangledNameHash()); + ASSERT_EQ(0x000001ecu, ImmutableString("imageStore(00y10D30B").mangledNameHash()); + ASSERT_EQ(0x000000fdu, ImmutableString("imageStore(00z10D30D").mangledNameHash()); + ASSERT_EQ(0x0000011cu, ImmutableString("imageStore(01A10D30E").mangledNameHash()); ASSERT_EQ(0x00000081u, ImmutableString("imageStore(01B20D30B").mangledNameHash()); - ASSERT_EQ(0x000002e7u, ImmutableString("imageStore(01C20D30D").mangledNameHash()); - ASSERT_EQ(0x00000329u, ImmutableString("imageStore(01D20D30E").mangledNameHash()); - ASSERT_EQ(0x000001c5u, ImmutableString("imageStore(01E20D30B").mangledNameHash()); - ASSERT_EQ(0x00000387u, ImmutableString("imageStore(01F20D30D").mangledNameHash()); - ASSERT_EQ(0x000000d7u, ImmutableString("imageStore(01G20D30E").mangledNameHash()); - ASSERT_EQ(0x000002c6u, ImmutableString("imageStore(01H20D30B").mangledNameHash()); + ASSERT_EQ(0x000002edu, ImmutableString("imageStore(01C20D30D").mangledNameHash()); + ASSERT_EQ(0x0000032fu, ImmutableString("imageStore(01D20D30E").mangledNameHash()); + ASSERT_EQ(0x000001cbu, ImmutableString("imageStore(01E20D30B").mangledNameHash()); + ASSERT_EQ(0x0000038du, ImmutableString("imageStore(01F20D30D").mangledNameHash()); + ASSERT_EQ(0x000000dau, ImmutableString("imageStore(01G20D30E").mangledNameHash()); + ASSERT_EQ(0x000002ccu, ImmutableString("imageStore(01H20D30B").mangledNameHash()); ASSERT_EQ(0x0000005du, ImmutableString("imageStore(01I20D30D").mangledNameHash()); - ASSERT_EQ(0x0000010du, ImmutableString("imageStore(01J20D30E").mangledNameHash()); - ASSERT_EQ(0x00000298u, ImmutableString("memoryBarrier(").mangledNameHash()); + ASSERT_EQ(0x00000111u, ImmutableString("imageStore(01J20D30E").mangledNameHash()); + ASSERT_EQ(0x0000029eu, ImmutableString("memoryBarrier(").mangledNameHash()); ASSERT_EQ(0x00000066u, ImmutableString("memoryBarrierAtomicCounter(").mangledNameHash()); - ASSERT_EQ(0x000002c1u, ImmutableString("memoryBarrierBuffer(").mangledNameHash()); - ASSERT_EQ(0x00000361u, ImmutableString("memoryBarrierImage(").mangledNameHash()); - ASSERT_EQ(0x00000123u, ImmutableString("barrier(").mangledNameHash()); - ASSERT_EQ(0x000001f1u, ImmutableString("memoryBarrierShared(").mangledNameHash()); + ASSERT_EQ(0x000002c7u, ImmutableString("memoryBarrierBuffer(").mangledNameHash()); + ASSERT_EQ(0x00000367u, ImmutableString("memoryBarrierImage(").mangledNameHash()); + ASSERT_EQ(0x00000127u, ImmutableString("barrier(").mangledNameHash()); + ASSERT_EQ(0x000001f7u, ImmutableString("memoryBarrierShared(").mangledNameHash()); ASSERT_EQ(0x00000055u, ImmutableString("groupMemoryBarrier(").mangledNameHash()); - ASSERT_EQ(0x00000363u, ImmutableString("EmitVertex(").mangledNameHash()); + ASSERT_EQ(0x00000369u, ImmutableString("EmitVertex(").mangledNameHash()); ASSERT_EQ(0x00000034u, ImmutableString("EndPrimitive(").mangledNameHash()); - ASSERT_EQ(0x00000154u, ImmutableString("gl_DepthRangeParameters").mangledNameHash()); + ASSERT_EQ(0x000000bbu, ImmutableString("subpassLoad(01i").mangledNameHash()); + ASSERT_EQ(0x000000f5u, ImmutableString("subpassLoad(01j").mangledNameHash()); + ASSERT_EQ(0x000000bdu, ImmutableString("subpassLoad(01k").mangledNameHash()); + ASSERT_EQ(0x000002aau, ImmutableString("subpassLoad(01l00D").mangledNameHash()); + ASSERT_EQ(0x000000a9u, ImmutableString("subpassLoad(01m00D").mangledNameHash()); + ASSERT_EQ(0x000001e0u, ImmutableString("subpassLoad(01n00D").mangledNameHash()); + ASSERT_EQ(0x00000159u, ImmutableString("gl_DepthRangeParameters").mangledNameHash()); ASSERT_EQ(0x00000085u, ImmutableString("gl_DepthRange").mangledNameHash()); - ASSERT_EQ(0x00000311u, ImmutableString("gl_MaxVertexAttribs").mangledNameHash()); - ASSERT_EQ(0x0000034au, ImmutableString("gl_MaxVertexUniformVectors").mangledNameHash()); + ASSERT_EQ(0x00000317u, ImmutableString("gl_MaxVertexAttribs").mangledNameHash()); + ASSERT_EQ(0x00000350u, ImmutableString("gl_MaxVertexUniformVectors").mangledNameHash()); ASSERT_EQ(0x00000043u, ImmutableString("gl_MaxVertexTextureImageUnits").mangledNameHash()); - ASSERT_EQ(0x00000150u, ImmutableString("gl_MaxCombinedTextureImageUnits").mangledNameHash()); - ASSERT_EQ(0x0000031fu, ImmutableString("gl_MaxTextureImageUnits").mangledNameHash()); - ASSERT_EQ(0x000002eau, ImmutableString("gl_MaxFragmentUniformVectors").mangledNameHash()); - ASSERT_EQ(0x00000346u, ImmutableString("gl_MaxVaryingVectors").mangledNameHash()); - ASSERT_EQ(0x000000e2u, ImmutableString("gl_MaxDrawBuffers").mangledNameHash()); - ASSERT_EQ(0x00000274u, ImmutableString("gl_MaxDualSourceDrawBuffersEXT").mangledNameHash()); + ASSERT_EQ(0x00000155u, ImmutableString("gl_MaxCombinedTextureImageUnits").mangledNameHash()); + ASSERT_EQ(0x00000325u, ImmutableString("gl_MaxTextureImageUnits").mangledNameHash()); + ASSERT_EQ(0x000002f0u, ImmutableString("gl_MaxFragmentUniformVectors").mangledNameHash()); + ASSERT_EQ(0x0000034cu, ImmutableString("gl_MaxVaryingVectors").mangledNameHash()); + ASSERT_EQ(0x000000e5u, ImmutableString("gl_MaxDrawBuffers").mangledNameHash()); + ASSERT_EQ(0x0000027au, ImmutableString("gl_MaxDualSourceDrawBuffersEXT").mangledNameHash()); ASSERT_EQ(0x00000089u, ImmutableString("gl_MaxVertexOutputVectors").mangledNameHash()); - ASSERT_EQ(0x0000036bu, ImmutableString("gl_MaxFragmentInputVectors").mangledNameHash()); + ASSERT_EQ(0x00000371u, ImmutableString("gl_MaxFragmentInputVectors").mangledNameHash()); ASSERT_EQ(0x0000002eu, ImmutableString("gl_MinProgramTexelOffset").mangledNameHash()); - ASSERT_EQ(0x00000259u, ImmutableString("gl_MaxProgramTexelOffset").mangledNameHash()); + ASSERT_EQ(0x0000025fu, ImmutableString("gl_MaxProgramTexelOffset").mangledNameHash()); ASSERT_EQ(0x0000008du, ImmutableString("gl_MaxImageUnits").mangledNameHash()); - ASSERT_EQ(0x000001d7u, ImmutableString("gl_MaxVertexImageUniforms").mangledNameHash()); + ASSERT_EQ(0x000001ddu, ImmutableString("gl_MaxVertexImageUniforms").mangledNameHash()); ASSERT_EQ(0x000000a7u, ImmutableString("gl_MaxFragmentImageUniforms").mangledNameHash()); ASSERT_EQ(0x00000008u, ImmutableString("gl_MaxComputeImageUniforms").mangledNameHash()); - ASSERT_EQ(0x000001a5u, ImmutableString("gl_MaxCombinedImageUniforms").mangledNameHash()); - ASSERT_EQ(0x000000adu, - ImmutableString("gl_MaxCombinedShaderOutputResources").mangledNameHash()); - ASSERT_EQ(0x000000e4u, ImmutableString("gl_MaxComputeWorkGroupCount").mangledNameHash()); - ASSERT_EQ(0x0000014au, ImmutableString("gl_MaxComputeWorkGroupSize").mangledNameHash()); - ASSERT_EQ(0x000002bfu, ImmutableString("gl_MaxComputeUniformComponents").mangledNameHash()); - ASSERT_EQ(0x0000010fu, ImmutableString("gl_MaxComputeTextureImageUnits").mangledNameHash()); - ASSERT_EQ(0x0000037du, ImmutableString("gl_MaxComputeAtomicCounters").mangledNameHash()); - ASSERT_EQ(0x000000c0u, ImmutableString("gl_MaxComputeAtomicCounterBuffers").mangledNameHash()); - ASSERT_EQ(0x0000037fu, ImmutableString("gl_MaxVertexAtomicCounters").mangledNameHash()); - ASSERT_EQ(0x00000285u, ImmutableString("gl_MaxFragmentAtomicCounters").mangledNameHash()); - ASSERT_EQ(0x00000115u, ImmutableString("gl_MaxCombinedAtomicCounters").mangledNameHash()); + ASSERT_EQ(0x000001abu, ImmutableString("gl_MaxCombinedImageUniforms").mangledNameHash()); + ASSERT_EQ(0x000000aeu, ImmutableString("gl_MaxCombinedShaderOutputResources").mangledNameHash()); + ASSERT_EQ(0x000000e7u, ImmutableString("gl_MaxComputeWorkGroupCount").mangledNameHash()); + ASSERT_EQ(0x0000014fu, ImmutableString("gl_MaxComputeWorkGroupSize").mangledNameHash()); + ASSERT_EQ(0x000002c5u, ImmutableString("gl_MaxComputeUniformComponents").mangledNameHash()); + ASSERT_EQ(0x00000113u, ImmutableString("gl_MaxComputeTextureImageUnits").mangledNameHash()); + ASSERT_EQ(0x00000383u, ImmutableString("gl_MaxComputeAtomicCounters").mangledNameHash()); + ASSERT_EQ(0x000000c3u, ImmutableString("gl_MaxComputeAtomicCounterBuffers").mangledNameHash()); + ASSERT_EQ(0x00000385u, ImmutableString("gl_MaxVertexAtomicCounters").mangledNameHash()); + ASSERT_EQ(0x0000028bu, ImmutableString("gl_MaxFragmentAtomicCounters").mangledNameHash()); + ASSERT_EQ(0x00000119u, ImmutableString("gl_MaxCombinedAtomicCounters").mangledNameHash()); ASSERT_EQ(0x00000006u, ImmutableString("gl_MaxAtomicCounterBindings").mangledNameHash()); ASSERT_EQ(0x0000005eu, ImmutableString("gl_MaxVertexAtomicCounterBuffers").mangledNameHash()); - ASSERT_EQ(0x000001dau, ImmutableString("gl_MaxFragmentAtomicCounterBuffers").mangledNameHash()); - ASSERT_EQ(0x0000022du, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").mangledNameHash()); - ASSERT_EQ(0x00000291u, ImmutableString("gl_MaxAtomicCounterBufferSize").mangledNameHash()); - ASSERT_EQ(0x00000246u, ImmutableString("gl_MaxGeometryInputComponents").mangledNameHash()); + ASSERT_EQ(0x00000138u, ImmutableString("gl_MaxFragmentAtomicCounterBuffers").mangledNameHash()); + ASSERT_EQ(0x00000233u, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").mangledNameHash()); + ASSERT_EQ(0x00000297u, ImmutableString("gl_MaxAtomicCounterBufferSize").mangledNameHash()); + ASSERT_EQ(0x0000024cu, ImmutableString("gl_MaxGeometryInputComponents").mangledNameHash()); ASSERT_EQ(0x0000003fu, ImmutableString("gl_MaxGeometryOutputComponents").mangledNameHash()); - ASSERT_EQ(0x00000261u, ImmutableString("gl_MaxGeometryImageUniforms").mangledNameHash()); + ASSERT_EQ(0x00000267u, ImmutableString("gl_MaxGeometryImageUniforms").mangledNameHash()); ASSERT_EQ(0x00000040u, ImmutableString("gl_MaxGeometryTextureImageUnits").mangledNameHash()); ASSERT_EQ(0x00000029u, ImmutableString("gl_MaxGeometryOutputVertices").mangledNameHash()); - ASSERT_EQ(0x000002a4u, - ImmutableString("gl_MaxGeometryTotalOutputComponents").mangledNameHash()); - ASSERT_EQ(0x00000124u, ImmutableString("gl_MaxGeometryUniformComponents").mangledNameHash()); - ASSERT_EQ(0x000001e7u, ImmutableString("gl_MaxGeometryAtomicCounters").mangledNameHash()); - ASSERT_EQ(0x000000ffu, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").mangledNameHash()); + ASSERT_EQ(0x00000189u, ImmutableString("gl_MaxGeometryTotalOutputComponents").mangledNameHash()); + ASSERT_EQ(0x00000128u, ImmutableString("gl_MaxGeometryUniformComponents").mangledNameHash()); + ASSERT_EQ(0x000001edu, ImmutableString("gl_MaxGeometryAtomicCounters").mangledNameHash()); + ASSERT_EQ(0x00000103u, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").mangledNameHash()); ASSERT_EQ(0x000000a3u, ImmutableString("gl_FragCoord").mangledNameHash()); - ASSERT_EQ(0x000002e4u, ImmutableString("gl_FrontFacing").mangledNameHash()); - ASSERT_EQ(0x0000011au, ImmutableString("gl_PointCoord").mangledNameHash()); + ASSERT_EQ(0x000002eau, ImmutableString("gl_FrontFacing").mangledNameHash()); + ASSERT_EQ(0x0000011eu, ImmutableString("gl_PointCoord").mangledNameHash()); ASSERT_EQ(0x00000077u, ImmutableString("gl_FragColor").mangledNameHash()); - ASSERT_EQ(0x000002f7u, ImmutableString("gl_FragData").mangledNameHash()); - ASSERT_EQ(0x0000017au, ImmutableString("gl_FragDepth").mangledNameHash()); - ASSERT_EQ(0x000002e5u, ImmutableString("gl_SecondaryFragColorEXT").mangledNameHash()); - ASSERT_EQ(0x000001cfu, ImmutableString("gl_SecondaryFragDataEXT").mangledNameHash()); - ASSERT_EQ(0x0000016cu, ImmutableString("gl_FragDepthEXT").mangledNameHash()); - ASSERT_EQ(0x0000014du, ImmutableString("gl_LastFragData").mangledNameHash()); - ASSERT_EQ(0x00000166u, ImmutableString("gl_LastFragColor").mangledNameHash()); - ASSERT_EQ(0x00000302u, ImmutableString("gl_LastFragColorARM").mangledNameHash()); + ASSERT_EQ(0x000002fdu, ImmutableString("gl_FragData").mangledNameHash()); + ASSERT_EQ(0x0000017fu, ImmutableString("gl_FragDepth").mangledNameHash()); + ASSERT_EQ(0x000002ebu, ImmutableString("gl_SecondaryFragColorEXT").mangledNameHash()); + ASSERT_EQ(0x000001d5u, ImmutableString("gl_SecondaryFragDataEXT").mangledNameHash()); + ASSERT_EQ(0x00000171u, ImmutableString("gl_FragDepthEXT").mangledNameHash()); + ASSERT_EQ(0x00000152u, ImmutableString("gl_LastFragData").mangledNameHash()); + ASSERT_EQ(0x0000016bu, ImmutableString("gl_LastFragColor").mangledNameHash()); + ASSERT_EQ(0x00000308u, ImmutableString("gl_LastFragColorARM").mangledNameHash()); ASSERT_EQ(0x00000003u, ImmutableString("gl_PrimitiveID").mangledNameHash()); ASSERT_EQ(0x0000000eu, ImmutableString("gl_Layer").mangledNameHash()); - ASSERT_EQ(0x00000320u, ImmutableString("gl_Position").mangledNameHash()); - ASSERT_EQ(0x00000376u, ImmutableString("gl_PointSize").mangledNameHash()); - ASSERT_EQ(0x000001d5u, ImmutableString("gl_InstanceID").mangledNameHash()); - ASSERT_EQ(0x0000030au, ImmutableString("gl_VertexID").mangledNameHash()); - ASSERT_EQ(0x000003a6u, ImmutableString("gl_DrawID").mangledNameHash()); - ASSERT_EQ(0x0000014bu, ImmutableString("gl_BaseVertex").mangledNameHash()); - ASSERT_EQ(0x00000312u, ImmutableString("gl_BaseInstance").mangledNameHash()); + ASSERT_EQ(0x00000326u, ImmutableString("gl_Position").mangledNameHash()); + ASSERT_EQ(0x0000037cu, ImmutableString("gl_PointSize").mangledNameHash()); + ASSERT_EQ(0x000001dbu, ImmutableString("gl_InstanceID").mangledNameHash()); + ASSERT_EQ(0x00000310u, ImmutableString("gl_VertexID").mangledNameHash()); + ASSERT_EQ(0x000003acu, ImmutableString("gl_DrawID").mangledNameHash()); + ASSERT_EQ(0x00000150u, ImmutableString("gl_BaseVertex").mangledNameHash()); + ASSERT_EQ(0x00000318u, ImmutableString("gl_BaseInstance").mangledNameHash()); ASSERT_EQ(0x0000000au, ImmutableString("angle_BaseVertex").mangledNameHash()); - ASSERT_EQ(0x0000031du, ImmutableString("angle_BaseInstance").mangledNameHash()); - ASSERT_EQ(0x00000171u, ImmutableString("gl_ClipDistance").mangledNameHash()); + ASSERT_EQ(0x00000323u, ImmutableString("angle_BaseInstance").mangledNameHash()); + ASSERT_EQ(0x00000176u, ImmutableString("gl_ClipDistance").mangledNameHash()); ASSERT_EQ(0x0000004eu, ImmutableString("gl_MaxClipDistances").mangledNameHash()); - ASSERT_EQ(0x000002b9u, ImmutableString("gl_NumWorkGroups").mangledNameHash()); - ASSERT_EQ(0x0000020bu, ImmutableString("gl_WorkGroupSize").mangledNameHash()); - ASSERT_EQ(0x000001dbu, ImmutableString("gl_WorkGroupID").mangledNameHash()); - ASSERT_EQ(0x00000173u, ImmutableString("gl_LocalInvocationID").mangledNameHash()); - ASSERT_EQ(0x000001efu, ImmutableString("gl_GlobalInvocationID").mangledNameHash()); - ASSERT_EQ(0x000001bbu, ImmutableString("gl_LocalInvocationIndex").mangledNameHash()); - ASSERT_EQ(0x000000c1u, ImmutableString("gl_PrimitiveIDIn").mangledNameHash()); - ASSERT_EQ(0x00000144u, ImmutableString("gl_InvocationID").mangledNameHash()); - ASSERT_EQ(0x00000201u, ImmutableString("gl_PerVertex").mangledNameHash()); - ASSERT_EQ(0x000001cau, ImmutableString("gl_in").mangledNameHash()); - ASSERT_EQ(0x00000203u, ImmutableString("gl_ViewID_OVR").mangledNameHash()); + ASSERT_EQ(0x000002bfu, ImmutableString("gl_NumWorkGroups").mangledNameHash()); + ASSERT_EQ(0x00000211u, ImmutableString("gl_WorkGroupSize").mangledNameHash()); + ASSERT_EQ(0x000001e1u, ImmutableString("gl_WorkGroupID").mangledNameHash()); + ASSERT_EQ(0x00000178u, ImmutableString("gl_LocalInvocationID").mangledNameHash()); + ASSERT_EQ(0x000001f5u, ImmutableString("gl_GlobalInvocationID").mangledNameHash()); + ASSERT_EQ(0x000001c1u, ImmutableString("gl_LocalInvocationIndex").mangledNameHash()); + ASSERT_EQ(0x000000c4u, ImmutableString("gl_PrimitiveIDIn").mangledNameHash()); + ASSERT_EQ(0x00000149u, ImmutableString("gl_InvocationID").mangledNameHash()); + ASSERT_EQ(0x00000207u, ImmutableString("gl_PerVertex").mangledNameHash()); + ASSERT_EQ(0x000001d0u, ImmutableString("gl_in").mangledNameHash()); + ASSERT_EQ(0x00000209u, ImmutableString("gl_ViewID_OVR").mangledNameHash()); ASSERT_EQ(0x0000001cu, ImmutableString("radians").unmangledNameHash()); ASSERT_EQ(0x0000000fu, ImmutableString("degrees").unmangledNameHash()); - ASSERT_EQ(0x0000007eu, ImmutableString("sin").unmangledNameHash()); - ASSERT_EQ(0x00000042u, ImmutableString("cos").unmangledNameHash()); - ASSERT_EQ(0x00000073u, ImmutableString("tan").unmangledNameHash()); + ASSERT_EQ(0x0000007fu, ImmutableString("sin").unmangledNameHash()); + ASSERT_EQ(0x00000043u, ImmutableString("cos").unmangledNameHash()); + ASSERT_EQ(0x00000074u, ImmutableString("tan").unmangledNameHash()); ASSERT_EQ(0x0000002bu, ImmutableString("asin").unmangledNameHash()); - ASSERT_EQ(0x00000049u, ImmutableString("acos").unmangledNameHash()); - ASSERT_EQ(0x00000080u, ImmutableString("atan").unmangledNameHash()); - ASSERT_EQ(0x0000003fu, ImmutableString("sinh").unmangledNameHash()); + ASSERT_EQ(0x0000004au, ImmutableString("acos").unmangledNameHash()); + ASSERT_EQ(0x00000081u, ImmutableString("atan").unmangledNameHash()); + ASSERT_EQ(0x00000040u, ImmutableString("sinh").unmangledNameHash()); ASSERT_EQ(0x00000029u, ImmutableString("cosh").unmangledNameHash()); - ASSERT_EQ(0x00000068u, ImmutableString("tanh").unmangledNameHash()); - ASSERT_EQ(0x00000070u, ImmutableString("asinh").unmangledNameHash()); + ASSERT_EQ(0x00000069u, ImmutableString("tanh").unmangledNameHash()); + ASSERT_EQ(0x00000071u, ImmutableString("asinh").unmangledNameHash()); ASSERT_EQ(0x00000028u, ImmutableString("acosh").unmangledNameHash()); - ASSERT_EQ(0x0000007au, ImmutableString("atanh").unmangledNameHash()); - ASSERT_EQ(0x0000004eu, ImmutableString("pow").unmangledNameHash()); - ASSERT_EQ(0x00000090u, ImmutableString("exp").unmangledNameHash()); - ASSERT_EQ(0x00000058u, ImmutableString("log").unmangledNameHash()); - ASSERT_EQ(0x0000005au, ImmutableString("exp2").unmangledNameHash()); - ASSERT_EQ(0x00000037u, ImmutableString("log2").unmangledNameHash()); - ASSERT_EQ(0x0000007cu, ImmutableString("sqrt").unmangledNameHash()); - ASSERT_EQ(0x00000066u, ImmutableString("inversesqrt").unmangledNameHash()); + ASSERT_EQ(0x0000007bu, ImmutableString("atanh").unmangledNameHash()); + ASSERT_EQ(0x0000004fu, ImmutableString("pow").unmangledNameHash()); + ASSERT_EQ(0x00000091u, ImmutableString("exp").unmangledNameHash()); + ASSERT_EQ(0x00000059u, ImmutableString("log").unmangledNameHash()); + ASSERT_EQ(0x0000005bu, ImmutableString("exp2").unmangledNameHash()); + ASSERT_EQ(0x00000038u, ImmutableString("log2").unmangledNameHash()); + ASSERT_EQ(0x0000007du, ImmutableString("sqrt").unmangledNameHash()); + ASSERT_EQ(0x00000067u, ImmutableString("inversesqrt").unmangledNameHash()); ASSERT_EQ(0x00000034u, ImmutableString("abs").unmangledNameHash()); - ASSERT_EQ(0x00000065u, ImmutableString("sign").unmangledNameHash()); - ASSERT_EQ(0x00000078u, ImmutableString("floor").unmangledNameHash()); - ASSERT_EQ(0x00000041u, ImmutableString("trunc").unmangledNameHash()); + ASSERT_EQ(0x00000066u, ImmutableString("sign").unmangledNameHash()); + ASSERT_EQ(0x00000079u, ImmutableString("floor").unmangledNameHash()); + ASSERT_EQ(0x00000042u, ImmutableString("trunc").unmangledNameHash()); ASSERT_EQ(0x00000023u, ImmutableString("round").unmangledNameHash()); ASSERT_EQ(0x00000014u, ImmutableString("roundEven").unmangledNameHash()); ASSERT_EQ(0x00000017u, ImmutableString("ceil").unmangledNameHash()); - ASSERT_EQ(0x0000005cu, ImmutableString("fract").unmangledNameHash()); + ASSERT_EQ(0x0000005du, ImmutableString("fract").unmangledNameHash()); ASSERT_EQ(0x0000001au, ImmutableString("mod").unmangledNameHash()); - ASSERT_EQ(0x0000008du, ImmutableString("min").unmangledNameHash()); + ASSERT_EQ(0x0000008eu, ImmutableString("min").unmangledNameHash()); ASSERT_EQ(0x00000035u, ImmutableString("max").unmangledNameHash()); ASSERT_EQ(0x00000025u, ImmutableString("clamp").unmangledNameHash()); - ASSERT_EQ(0x0000007du, ImmutableString("mix").unmangledNameHash()); - ASSERT_EQ(0x0000003eu, ImmutableString("step").unmangledNameHash()); + ASSERT_EQ(0x0000007eu, ImmutableString("mix").unmangledNameHash()); + ASSERT_EQ(0x0000003fu, ImmutableString("step").unmangledNameHash()); ASSERT_EQ(0x0000001du, ImmutableString("smoothstep").unmangledNameHash()); ASSERT_EQ(0x00000021u, ImmutableString("modf").unmangledNameHash()); ASSERT_EQ(0x0000002cu, ImmutableString("isnan").unmangledNameHash()); - ASSERT_EQ(0x00000083u, ImmutableString("isinf").unmangledNameHash()); + ASSERT_EQ(0x00000084u, ImmutableString("isinf").unmangledNameHash()); ASSERT_EQ(0x0000001bu, ImmutableString("floatBitsToInt").unmangledNameHash()); - ASSERT_EQ(0x00000052u, ImmutableString("floatBitsToUint").unmangledNameHash()); - ASSERT_EQ(0x0000006cu, ImmutableString("intBitsToFloat").unmangledNameHash()); - ASSERT_EQ(0x0000004au, ImmutableString("uintBitsToFloat").unmangledNameHash()); + ASSERT_EQ(0x00000053u, ImmutableString("floatBitsToUint").unmangledNameHash()); + ASSERT_EQ(0x0000006du, ImmutableString("intBitsToFloat").unmangledNameHash()); + ASSERT_EQ(0x0000004bu, ImmutableString("uintBitsToFloat").unmangledNameHash()); ASSERT_EQ(0x0000000eu, ImmutableString("frexp").unmangledNameHash()); - ASSERT_EQ(0x00000051u, ImmutableString("ldexp").unmangledNameHash()); - ASSERT_EQ(0x0000008fu, ImmutableString("packSnorm2x16").unmangledNameHash()); - ASSERT_EQ(0x00000093u, ImmutableString("packHalf2x16").unmangledNameHash()); - ASSERT_EQ(0x00000036u, ImmutableString("unpackSnorm2x16").unmangledNameHash()); - ASSERT_EQ(0x0000004cu, ImmutableString("unpackHalf2x16").unmangledNameHash()); - ASSERT_EQ(0x0000004bu, ImmutableString("packUnorm2x16").unmangledNameHash()); - ASSERT_EQ(0x00000081u, ImmutableString("unpackUnorm2x16").unmangledNameHash()); - ASSERT_EQ(0x00000064u, ImmutableString("packUnorm4x8").unmangledNameHash()); + ASSERT_EQ(0x00000052u, ImmutableString("ldexp").unmangledNameHash()); + ASSERT_EQ(0x00000090u, ImmutableString("packSnorm2x16").unmangledNameHash()); + ASSERT_EQ(0x00000094u, ImmutableString("packHalf2x16").unmangledNameHash()); + ASSERT_EQ(0x00000037u, ImmutableString("unpackSnorm2x16").unmangledNameHash()); + ASSERT_EQ(0x0000004du, ImmutableString("unpackHalf2x16").unmangledNameHash()); + ASSERT_EQ(0x0000004cu, ImmutableString("packUnorm2x16").unmangledNameHash()); + ASSERT_EQ(0x00000082u, ImmutableString("unpackUnorm2x16").unmangledNameHash()); + ASSERT_EQ(0x00000065u, ImmutableString("packUnorm4x8").unmangledNameHash()); ASSERT_EQ(0x0000000au, ImmutableString("packSnorm4x8").unmangledNameHash()); ASSERT_EQ(0x00000002u, ImmutableString("unpackUnorm4x8").unmangledNameHash()); ASSERT_EQ(0x00000022u, ImmutableString("unpackSnorm4x8").unmangledNameHash()); - ASSERT_EQ(0x00000047u, ImmutableString("length").unmangledNameHash()); - ASSERT_EQ(0x00000067u, ImmutableString("distance").unmangledNameHash()); - ASSERT_EQ(0x00000095u, ImmutableString("dot").unmangledNameHash()); - ASSERT_EQ(0x0000007bu, ImmutableString("cross").unmangledNameHash()); - ASSERT_EQ(0x00000076u, ImmutableString("normalize").unmangledNameHash()); + ASSERT_EQ(0x00000048u, ImmutableString("length").unmangledNameHash()); + ASSERT_EQ(0x00000068u, ImmutableString("distance").unmangledNameHash()); + ASSERT_EQ(0x00000096u, ImmutableString("dot").unmangledNameHash()); + ASSERT_EQ(0x0000007cu, ImmutableString("cross").unmangledNameHash()); + ASSERT_EQ(0x00000077u, ImmutableString("normalize").unmangledNameHash()); ASSERT_EQ(0x00000033u, ImmutableString("faceforward").unmangledNameHash()); - ASSERT_EQ(0x00000082u, ImmutableString("reflect").unmangledNameHash()); - ASSERT_EQ(0x0000008cu, ImmutableString("refract").unmangledNameHash()); - ASSERT_EQ(0x0000004du, ImmutableString("matrixCompMult").unmangledNameHash()); - ASSERT_EQ(0x0000008au, ImmutableString("outerProduct").unmangledNameHash()); - ASSERT_EQ(0x0000003du, ImmutableString("transpose").unmangledNameHash()); - ASSERT_EQ(0x0000005eu, ImmutableString("determinant").unmangledNameHash()); + ASSERT_EQ(0x00000083u, ImmutableString("reflect").unmangledNameHash()); + ASSERT_EQ(0x0000008du, ImmutableString("refract").unmangledNameHash()); + ASSERT_EQ(0x0000004eu, ImmutableString("matrixCompMult").unmangledNameHash()); + ASSERT_EQ(0x0000008bu, ImmutableString("outerProduct").unmangledNameHash()); + ASSERT_EQ(0x0000003eu, ImmutableString("transpose").unmangledNameHash()); + ASSERT_EQ(0x0000005fu, ImmutableString("determinant").unmangledNameHash()); ASSERT_EQ(0x0000000bu, ImmutableString("inverse").unmangledNameHash()); ASSERT_EQ(0x0000001fu, ImmutableString("lessThan").unmangledNameHash()); - ASSERT_EQ(0x0000003cu, ImmutableString("lessThanEqual").unmangledNameHash()); - ASSERT_EQ(0x00000061u, ImmutableString("greaterThan").unmangledNameHash()); - ASSERT_EQ(0x00000060u, ImmutableString("greaterThanEqual").unmangledNameHash()); - ASSERT_EQ(0x00000043u, ImmutableString("equal").unmangledNameHash()); - ASSERT_EQ(0x00000089u, ImmutableString("notEqual").unmangledNameHash()); - ASSERT_EQ(0x00000074u, ImmutableString("any").unmangledNameHash()); + ASSERT_EQ(0x0000003du, ImmutableString("lessThanEqual").unmangledNameHash()); + ASSERT_EQ(0x00000062u, ImmutableString("greaterThan").unmangledNameHash()); + ASSERT_EQ(0x00000061u, ImmutableString("greaterThanEqual").unmangledNameHash()); + ASSERT_EQ(0x00000044u, ImmutableString("equal").unmangledNameHash()); + ASSERT_EQ(0x0000008au, ImmutableString("notEqual").unmangledNameHash()); + ASSERT_EQ(0x00000075u, ImmutableString("any").unmangledNameHash()); ASSERT_EQ(0x00000000u, ImmutableString("all").unmangledNameHash()); ASSERT_EQ(0x00000018u, ImmutableString("not").unmangledNameHash()); - ASSERT_EQ(0x0000006du, ImmutableString("bitfieldExtract").unmangledNameHash()); - ASSERT_EQ(0x00000062u, ImmutableString("bitfieldInsert").unmangledNameHash()); + ASSERT_EQ(0x0000006eu, ImmutableString("bitfieldExtract").unmangledNameHash()); + ASSERT_EQ(0x00000063u, ImmutableString("bitfieldInsert").unmangledNameHash()); ASSERT_EQ(0x0000002eu, ImmutableString("bitfieldReverse").unmangledNameHash()); - ASSERT_EQ(0x00000059u, ImmutableString("bitCount").unmangledNameHash()); + ASSERT_EQ(0x0000005au, ImmutableString("bitCount").unmangledNameHash()); ASSERT_EQ(0x00000007u, ImmutableString("findLSB").unmangledNameHash()); ASSERT_EQ(0x00000026u, ImmutableString("findMSB").unmangledNameHash()); ASSERT_EQ(0x0000002au, ImmutableString("uaddCarry").unmangledNameHash()); - ASSERT_EQ(0x00000045u, ImmutableString("usubBorrow").unmangledNameHash()); - ASSERT_EQ(0x00000085u, ImmutableString("umulExtended").unmangledNameHash()); + ASSERT_EQ(0x00000046u, ImmutableString("usubBorrow").unmangledNameHash()); + ASSERT_EQ(0x00000086u, ImmutableString("umulExtended").unmangledNameHash()); ASSERT_EQ(0x00000010u, ImmutableString("imulExtended").unmangledNameHash()); - ASSERT_EQ(0x00000071u, ImmutableString("texture2D").unmangledNameHash()); - ASSERT_EQ(0x0000003au, ImmutableString("texture2DProj").unmangledNameHash()); - ASSERT_EQ(0x0000008eu, ImmutableString("textureCube").unmangledNameHash()); + ASSERT_EQ(0x00000072u, ImmutableString("texture2D").unmangledNameHash()); + ASSERT_EQ(0x0000003bu, ImmutableString("texture2DProj").unmangledNameHash()); + ASSERT_EQ(0x0000008fu, ImmutableString("textureCube").unmangledNameHash()); ASSERT_EQ(0x00000027u, ImmutableString("texture2DRect").unmangledNameHash()); ASSERT_EQ(0x00000019u, ImmutableString("texture2DRectProj").unmangledNameHash()); ASSERT_EQ(0x0000000du, ImmutableString("texture").unmangledNameHash()); ASSERT_EQ(0x00000001u, ImmutableString("textureProj").unmangledNameHash()); - ASSERT_EQ(0x00000069u, ImmutableString("texture2DGradEXT").unmangledNameHash()); + ASSERT_EQ(0x0000006au, ImmutableString("texture2DGradEXT").unmangledNameHash()); ASSERT_EQ(0x00000011u, ImmutableString("texture2DProjGradEXT").unmangledNameHash()); ASSERT_EQ(0x00000008u, ImmutableString("textureCubeGradEXT").unmangledNameHash()); ASSERT_EQ(0x0000002fu, ImmutableString("dFdx").unmangledNameHash()); ASSERT_EQ(0x00000020u, ImmutableString("dFdy").unmangledNameHash()); ASSERT_EQ(0x00000003u, ImmutableString("fwidth").unmangledNameHash()); - ASSERT_EQ(0x00000044u, ImmutableString("texture2DLodEXT").unmangledNameHash()); + ASSERT_EQ(0x00000045u, ImmutableString("texture2DLodEXT").unmangledNameHash()); ASSERT_EQ(0x00000015u, ImmutableString("texture2DProjLodEXT").unmangledNameHash()); - ASSERT_EQ(0x00000054u, ImmutableString("textureCubeLodEXT").unmangledNameHash()); - ASSERT_EQ(0x00000084u, ImmutableString("texture3D").unmangledNameHash()); - ASSERT_EQ(0x00000063u, ImmutableString("texture3DProj").unmangledNameHash()); + ASSERT_EQ(0x00000055u, ImmutableString("textureCubeLodEXT").unmangledNameHash()); + ASSERT_EQ(0x00000085u, ImmutableString("texture3D").unmangledNameHash()); + ASSERT_EQ(0x00000064u, ImmutableString("texture3DProj").unmangledNameHash()); ASSERT_EQ(0x00000031u, ImmutableString("texture3DLod").unmangledNameHash()); - ASSERT_EQ(0x0000006eu, ImmutableString("texture3DProjLod").unmangledNameHash()); - ASSERT_EQ(0x00000094u, ImmutableString("texture2DLod").unmangledNameHash()); - ASSERT_EQ(0x00000050u, ImmutableString("texture2DProjLod").unmangledNameHash()); + ASSERT_EQ(0x0000006fu, ImmutableString("texture3DProjLod").unmangledNameHash()); + ASSERT_EQ(0x00000095u, ImmutableString("texture2DLod").unmangledNameHash()); + ASSERT_EQ(0x00000051u, ImmutableString("texture2DProjLod").unmangledNameHash()); ASSERT_EQ(0x0000000cu, ImmutableString("textureCubeLod").unmangledNameHash()); ASSERT_EQ(0x00000032u, ImmutableString("textureLod").unmangledNameHash()); - ASSERT_EQ(0x00000048u, ImmutableString("textureSize").unmangledNameHash()); - ASSERT_EQ(0x00000053u, ImmutableString("textureProjLod").unmangledNameHash()); - ASSERT_EQ(0x00000087u, ImmutableString("texelFetch").unmangledNameHash()); - ASSERT_EQ(0x00000038u, ImmutableString("textureGrad").unmangledNameHash()); + ASSERT_EQ(0x00000049u, ImmutableString("textureSize").unmangledNameHash()); + ASSERT_EQ(0x00000054u, ImmutableString("textureProjLod").unmangledNameHash()); + ASSERT_EQ(0x00000088u, ImmutableString("texelFetch").unmangledNameHash()); + ASSERT_EQ(0x00000039u, ImmutableString("textureGrad").unmangledNameHash()); ASSERT_EQ(0x0000001eu, ImmutableString("textureProjGrad").unmangledNameHash()); ASSERT_EQ(0x00000024u, ImmutableString("textureOffset").unmangledNameHash()); - ASSERT_EQ(0x00000040u, ImmutableString("textureProjOffset").unmangledNameHash()); - ASSERT_EQ(0x00000079u, ImmutableString("textureLodOffset").unmangledNameHash()); - ASSERT_EQ(0x00000057u, ImmutableString("textureProjLodOffset").unmangledNameHash()); - ASSERT_EQ(0x00000046u, ImmutableString("texelFetchOffset").unmangledNameHash()); - ASSERT_EQ(0x0000007fu, ImmutableString("textureGradOffset").unmangledNameHash()); + ASSERT_EQ(0x00000041u, ImmutableString("textureProjOffset").unmangledNameHash()); + ASSERT_EQ(0x0000007au, ImmutableString("textureLodOffset").unmangledNameHash()); + ASSERT_EQ(0x00000058u, ImmutableString("textureProjLodOffset").unmangledNameHash()); + ASSERT_EQ(0x00000047u, ImmutableString("texelFetchOffset").unmangledNameHash()); + ASSERT_EQ(0x00000080u, ImmutableString("textureGradOffset").unmangledNameHash()); ASSERT_EQ(0x00000013u, ImmutableString("textureProjGradOffset").unmangledNameHash()); ASSERT_EQ(0x00000004u, ImmutableString("rgb_2_yuv").unmangledNameHash()); ASSERT_EQ(0x00000006u, ImmutableString("yuv_2_rgb").unmangledNameHash()); - ASSERT_EQ(0x0000005fu, ImmutableString("textureGather").unmangledNameHash()); - ASSERT_EQ(0x00000056u, ImmutableString("textureGatherOffset").unmangledNameHash()); - ASSERT_EQ(0x0000006bu, ImmutableString("atomicCounter").unmangledNameHash()); + ASSERT_EQ(0x00000060u, ImmutableString("textureGather").unmangledNameHash()); + ASSERT_EQ(0x00000057u, ImmutableString("textureGatherOffset").unmangledNameHash()); + ASSERT_EQ(0x0000006cu, ImmutableString("atomicCounter").unmangledNameHash()); ASSERT_EQ(0x00000005u, ImmutableString("atomicCounterIncrement").unmangledNameHash()); - ASSERT_EQ(0x0000003bu, ImmutableString("atomicCounterDecrement").unmangledNameHash()); - ASSERT_EQ(0x0000006fu, ImmutableString("atomicAdd").unmangledNameHash()); - ASSERT_EQ(0x00000092u, ImmutableString("atomicMin").unmangledNameHash()); + ASSERT_EQ(0x0000003cu, ImmutableString("atomicCounterDecrement").unmangledNameHash()); + ASSERT_EQ(0x00000070u, ImmutableString("atomicAdd").unmangledNameHash()); + ASSERT_EQ(0x00000093u, ImmutableString("atomicMin").unmangledNameHash()); ASSERT_EQ(0x0000002du, ImmutableString("atomicMax").unmangledNameHash()); ASSERT_EQ(0x00000012u, ImmutableString("atomicAnd").unmangledNameHash()); - ASSERT_EQ(0x00000086u, ImmutableString("atomicOr").unmangledNameHash()); - ASSERT_EQ(0x00000075u, ImmutableString("atomicXor").unmangledNameHash()); - ASSERT_EQ(0x0000004fu, ImmutableString("atomicExchange").unmangledNameHash()); - ASSERT_EQ(0x0000005bu, ImmutableString("atomicCompSwap").unmangledNameHash()); - ASSERT_EQ(0x0000008bu, ImmutableString("imageSize").unmangledNameHash()); - ASSERT_EQ(0x00000077u, ImmutableString("imageLoad").unmangledNameHash()); - ASSERT_EQ(0x00000055u, ImmutableString("imageStore").unmangledNameHash()); - ASSERT_EQ(0x0000006au, ImmutableString("memoryBarrier").unmangledNameHash()); + ASSERT_EQ(0x00000087u, ImmutableString("atomicOr").unmangledNameHash()); + ASSERT_EQ(0x00000076u, ImmutableString("atomicXor").unmangledNameHash()); + ASSERT_EQ(0x00000050u, ImmutableString("atomicExchange").unmangledNameHash()); + ASSERT_EQ(0x0000005cu, ImmutableString("atomicCompSwap").unmangledNameHash()); + ASSERT_EQ(0x0000008cu, ImmutableString("imageSize").unmangledNameHash()); + ASSERT_EQ(0x00000078u, ImmutableString("imageLoad").unmangledNameHash()); + ASSERT_EQ(0x00000056u, ImmutableString("imageStore").unmangledNameHash()); + ASSERT_EQ(0x0000006bu, ImmutableString("memoryBarrier").unmangledNameHash()); ASSERT_EQ(0x00000016u, ImmutableString("memoryBarrierAtomicCounter").unmangledNameHash()); - ASSERT_EQ(0x00000072u, ImmutableString("memoryBarrierBuffer").unmangledNameHash()); + ASSERT_EQ(0x00000073u, ImmutableString("memoryBarrierBuffer").unmangledNameHash()); ASSERT_EQ(0x00000009u, ImmutableString("memoryBarrierImage").unmangledNameHash()); - ASSERT_EQ(0x00000039u, ImmutableString("barrier").unmangledNameHash()); + ASSERT_EQ(0x0000003au, ImmutableString("barrier").unmangledNameHash()); ASSERT_EQ(0x00000030u, ImmutableString("memoryBarrierShared").unmangledNameHash()); - ASSERT_EQ(0x00000091u, ImmutableString("groupMemoryBarrier").unmangledNameHash()); - ASSERT_EQ(0x0000005du, ImmutableString("EmitVertex").unmangledNameHash()); - ASSERT_EQ(0x00000088u, ImmutableString("EndPrimitive").unmangledNameHash()); + ASSERT_EQ(0x00000092u, ImmutableString("groupMemoryBarrier").unmangledNameHash()); + ASSERT_EQ(0x0000005eu, ImmutableString("EmitVertex").unmangledNameHash()); + ASSERT_EQ(0x00000089u, ImmutableString("EndPrimitive").unmangledNameHash()); + ASSERT_EQ(0x00000036u, ImmutableString("subpassLoad").unmangledNameHash()); } } // namespace sh diff --git a/src/tests/compiler_tests/ImmutableString_test_autogen.cpp b/src/tests/compiler_tests/ImmutableString_test_autogen.cpp index bb1a3e1915..16538fd0b7 100644 --- a/src/tests/compiler_tests/ImmutableString_test_autogen.cpp +++ b/src/tests/compiler_tests/ImmutableString_test_autogen.cpp @@ -1,7 +1,7 @@ // GENERATED FILE - DO NOT EDIT. // Generated by gen_builtin_symbols.py using data from builtin_function_declarations.txt. // -// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Copyright 2021 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. // @@ -1153,54 +1153,30 @@ TEST(ImmutableStringTest, ScriptGeneratedHashesMatch) ASSERT_EQ(0x00000154u, ImmutableString("textureGradOffset(00p10B00B00B00D").mangledNameHash()); ASSERT_EQ(0x000004ceu, ImmutableString("textureGradOffset(00u10B00B00B00D").mangledNameHash()); ASSERT_EQ(0x00000435u, ImmutableString("textureGradOffset(00i20B00B00B00D").mangledNameHash()); - ASSERT_EQ(0x000002aeu, - ImmutableString("textureProjGradOffset(00I20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000374u, - ImmutableString("textureProjGradOffset(00R20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x0000038bu, - ImmutableString("textureProjGradOffset(00X20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x000005aau, - ImmutableString("textureProjGradOffset(00I30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x000007b9u, - ImmutableString("textureProjGradOffset(00R30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x000006f3u, - ImmutableString("textureProjGradOffset(00X30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000854u, - ImmutableString("textureProjGradOffset(00J30B20B20B20D").mangledNameHash()); - ASSERT_EQ(0x000004f4u, - ImmutableString("textureProjGradOffset(00S30B20B20B20D").mangledNameHash()); - ASSERT_EQ(0x000001f5u, - ImmutableString("textureProjGradOffset(00Y30B20B20B20D").mangledNameHash()); - ASSERT_EQ(0x0000016cu, - ImmutableString("textureProjGradOffset(00d30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000833u, - ImmutableString("textureProjGradOffset(00g10B00B00B00D").mangledNameHash()); - ASSERT_EQ(0x000002c7u, - ImmutableString("textureProjGradOffset(00o10B00B00B00D").mangledNameHash()); - ASSERT_EQ(0x00000775u, - ImmutableString("textureProjGradOffset(00t10B00B00B00D").mangledNameHash()); - ASSERT_EQ(0x000001a1u, - ImmutableString("textureProjGradOffset(00g30B00B00B00D").mangledNameHash()); - ASSERT_EQ(0x00000571u, - ImmutableString("textureProjGradOffset(00o30B00B00B00D").mangledNameHash()); - ASSERT_EQ(0x00000675u, - ImmutableString("textureProjGradOffset(00t30B00B00B00D").mangledNameHash()); - ASSERT_EQ(0x00000350u, - ImmutableString("textureProjGradOffset(00O20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000180u, - ImmutableString("textureProjGradOffset(00q20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000165u, - ImmutableString("textureProjGradOffset(00v20B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000012u, - ImmutableString("textureProjGradOffset(00O30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000410u, - ImmutableString("textureProjGradOffset(00q30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000005u, - ImmutableString("textureProjGradOffset(00v30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x00000746u, - ImmutableString("textureProjGradOffset(00n30B10B10B10D").mangledNameHash()); - ASSERT_EQ(0x0000056eu, - ImmutableString("textureProjGradOffset(00m30B00B00B00D").mangledNameHash()); + ASSERT_EQ(0x000002aeu, ImmutableString("textureProjGradOffset(00I20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000374u, ImmutableString("textureProjGradOffset(00R20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x0000038bu, ImmutableString("textureProjGradOffset(00X20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x000005aau, ImmutableString("textureProjGradOffset(00I30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x000007b9u, ImmutableString("textureProjGradOffset(00R30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x000006f3u, ImmutableString("textureProjGradOffset(00X30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000854u, ImmutableString("textureProjGradOffset(00J30B20B20B20D").mangledNameHash()); + ASSERT_EQ(0x000004f4u, ImmutableString("textureProjGradOffset(00S30B20B20B20D").mangledNameHash()); + ASSERT_EQ(0x000001f5u, ImmutableString("textureProjGradOffset(00Y30B20B20B20D").mangledNameHash()); + ASSERT_EQ(0x0000016cu, ImmutableString("textureProjGradOffset(00d30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000833u, ImmutableString("textureProjGradOffset(00g10B00B00B00D").mangledNameHash()); + ASSERT_EQ(0x000002c7u, ImmutableString("textureProjGradOffset(00o10B00B00B00D").mangledNameHash()); + ASSERT_EQ(0x00000775u, ImmutableString("textureProjGradOffset(00t10B00B00B00D").mangledNameHash()); + ASSERT_EQ(0x000001a1u, ImmutableString("textureProjGradOffset(00g30B00B00B00D").mangledNameHash()); + ASSERT_EQ(0x00000571u, ImmutableString("textureProjGradOffset(00o30B00B00B00D").mangledNameHash()); + ASSERT_EQ(0x00000675u, ImmutableString("textureProjGradOffset(00t30B00B00B00D").mangledNameHash()); + ASSERT_EQ(0x00000350u, ImmutableString("textureProjGradOffset(00O20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000180u, ImmutableString("textureProjGradOffset(00q20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000165u, ImmutableString("textureProjGradOffset(00v20B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000012u, ImmutableString("textureProjGradOffset(00O30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000410u, ImmutableString("textureProjGradOffset(00q30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000005u, ImmutableString("textureProjGradOffset(00v30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x00000746u, ImmutableString("textureProjGradOffset(00n30B10B10B10D").mangledNameHash()); + ASSERT_EQ(0x0000056eu, ImmutableString("textureProjGradOffset(00m30B00B00B00D").mangledNameHash()); ASSERT_EQ(0x000007d2u, ImmutableString("textureOffset(00I10B10D00B").mangledNameHash()); ASSERT_EQ(0x00000147u, ImmutableString("textureOffset(00R10B10D00B").mangledNameHash()); ASSERT_EQ(0x000000f8u, ImmutableString("textureOffset(00X10B10D00B").mangledNameHash()); @@ -1953,18 +1929,12 @@ TEST(ImmutableStringTest, ScriptGeneratedHashesMatch) ASSERT_EQ(0x000001e5u, ImmutableString("imageAtomicCompSwap(01W10D00E00E").mangledNameHash()); ASSERT_EQ(0x00000112u, ImmutableString("imageAtomicCompSwap(01X10D00E00E").mangledNameHash()); ASSERT_EQ(0x0000021du, ImmutableString("imageAtomicCompSwap(01Y10D00E00E").mangledNameHash()); - ASSERT_EQ(0x000007c7u, - ImmutableString("imageAtomicCompSwap(01Q10D00D00E00E").mangledNameHash()); - ASSERT_EQ(0x00000391u, - ImmutableString("imageAtomicCompSwap(01R10D00D00E00E").mangledNameHash()); - ASSERT_EQ(0x00000478u, - ImmutableString("imageAtomicCompSwap(01S10D00D00E00E").mangledNameHash()); - ASSERT_EQ(0x00000298u, - ImmutableString("imageAtomicCompSwap(01T20D00D00E00E").mangledNameHash()); - ASSERT_EQ(0x00000678u, - ImmutableString("imageAtomicCompSwap(01U20D00D00E00E").mangledNameHash()); - ASSERT_EQ(0x00000748u, - ImmutableString("imageAtomicCompSwap(01V20D00D00E00E").mangledNameHash()); + ASSERT_EQ(0x000007c7u, ImmutableString("imageAtomicCompSwap(01Q10D00D00E00E").mangledNameHash()); + ASSERT_EQ(0x00000391u, ImmutableString("imageAtomicCompSwap(01R10D00D00E00E").mangledNameHash()); + ASSERT_EQ(0x00000478u, ImmutableString("imageAtomicCompSwap(01S10D00D00E00E").mangledNameHash()); + ASSERT_EQ(0x00000298u, ImmutableString("imageAtomicCompSwap(01T20D00D00E00E").mangledNameHash()); + ASSERT_EQ(0x00000678u, ImmutableString("imageAtomicCompSwap(01U20D00D00E00E").mangledNameHash()); + ASSERT_EQ(0x00000748u, ImmutableString("imageAtomicCompSwap(01V20D00D00E00E").mangledNameHash()); ASSERT_EQ(0x000004b6u, ImmutableString("imageAtomicCompSwap(00y10D00D00D").mangledNameHash()); ASSERT_EQ(0x00000773u, ImmutableString("imageAtomicCompSwap(00z10D00D00D").mangledNameHash()); ASSERT_EQ(0x0000006fu, ImmutableString("imageAtomicCompSwap(01A10D00D00D").mangledNameHash()); @@ -1992,18 +1962,12 @@ TEST(ImmutableStringTest, ScriptGeneratedHashesMatch) ASSERT_EQ(0x0000030fu, ImmutableString("imageAtomicCompSwap(01W10D00D00D").mangledNameHash()); ASSERT_EQ(0x00000844u, 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(0x0000062du, - ImmutableString("imageAtomicCompSwap(01S10D00D00D00D").mangledNameHash()); - ASSERT_EQ(0x00000357u, - ImmutableString("imageAtomicCompSwap(01T20D00D00D00D").mangledNameHash()); - ASSERT_EQ(0x0000054cu, - ImmutableString("imageAtomicCompSwap(01U20D00D00D00D").mangledNameHash()); - ASSERT_EQ(0x00000235u, - ImmutableString("imageAtomicCompSwap(01V20D00D00D00D").mangledNameHash()); + ASSERT_EQ(0x000000a8u, ImmutableString("imageAtomicCompSwap(01Q10D00D00D00D").mangledNameHash()); + ASSERT_EQ(0x00000029u, ImmutableString("imageAtomicCompSwap(01R10D00D00D00D").mangledNameHash()); + ASSERT_EQ(0x0000062du, ImmutableString("imageAtomicCompSwap(01S10D00D00D00D").mangledNameHash()); + ASSERT_EQ(0x00000357u, ImmutableString("imageAtomicCompSwap(01T20D00D00D00D").mangledNameHash()); + ASSERT_EQ(0x0000054cu, ImmutableString("imageAtomicCompSwap(01U20D00D00D00D").mangledNameHash()); + ASSERT_EQ(0x00000235u, ImmutableString("imageAtomicCompSwap(01V20D00D00D00D").mangledNameHash()); ASSERT_EQ(0x00000371u, ImmutableString("imageLoad(00y10D").mangledNameHash()); ASSERT_EQ(0x00000344u, ImmutableString("imageLoad(00z10D").mangledNameHash()); ASSERT_EQ(0x0000065au, ImmutableString("imageLoad(01A10D").mangledNameHash()); @@ -2126,8 +2090,7 @@ TEST(ImmutableStringTest, ScriptGeneratedHashesMatch) ASSERT_EQ(0x00000149u, ImmutableString("gl_MaxFragmentImageUniforms").mangledNameHash()); ASSERT_EQ(0x00000232u, ImmutableString("gl_MaxComputeImageUniforms").mangledNameHash()); ASSERT_EQ(0x00000544u, ImmutableString("gl_MaxCombinedImageUniforms").mangledNameHash()); - ASSERT_EQ(0x00000076u, - ImmutableString("gl_MaxCombinedShaderOutputResources").mangledNameHash()); + ASSERT_EQ(0x00000076u, ImmutableString("gl_MaxCombinedShaderOutputResources").mangledNameHash()); ASSERT_EQ(0x00000276u, ImmutableString("gl_MaxComputeWorkGroupCount").mangledNameHash()); ASSERT_EQ(0x000004adu, ImmutableString("gl_MaxComputeWorkGroupSize").mangledNameHash()); ASSERT_EQ(0x0000069au, ImmutableString("gl_MaxComputeUniformComponents").mangledNameHash()); @@ -2147,8 +2110,7 @@ TEST(ImmutableStringTest, ScriptGeneratedHashesMatch) ASSERT_EQ(0x00000106u, ImmutableString("gl_MaxGeometryImageUniforms").mangledNameHash()); ASSERT_EQ(0x000003dfu, ImmutableString("gl_MaxGeometryTextureImageUnits").mangledNameHash()); ASSERT_EQ(0x00000092u, ImmutableString("gl_MaxGeometryOutputVertices").mangledNameHash()); - ASSERT_EQ(0x0000052bu, - ImmutableString("gl_MaxGeometryTotalOutputComponents").mangledNameHash()); + ASSERT_EQ(0x0000052bu, ImmutableString("gl_MaxGeometryTotalOutputComponents").mangledNameHash()); ASSERT_EQ(0x000002d1u, ImmutableString("gl_MaxGeometryUniformComponents").mangledNameHash()); ASSERT_EQ(0x0000076du, ImmutableString("gl_MaxGeometryAtomicCounters").mangledNameHash()); ASSERT_EQ(0x00000731u, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").mangledNameHash()); From 8cb2fe1e1949a4b2aabe90adec3977cd90dfd4c3 Mon Sep 17 00:00:00 2001 From: s-inagaki923 <94434539+s-inagaki923@users.noreply.github.com> Date: Wed, 29 Dec 2021 17:52:59 +0900 Subject: [PATCH 5/9] Modify metal backend to process input attachment --- src/compiler/translator/blocklayout.cpp | 3 +- src/libANGLE/Program.cpp | 19 ++-- src/libANGLE/Program.h | 2 + src/libANGLE/ProgramLinkedResources.cpp | 41 +++++++-- src/libANGLE/ProgramLinkedResources.h | 17 +++- .../renderer/glslang_wrapper_utils.cpp | 90 ++++++++++++++++++- src/libANGLE/renderer/metal/ProgramMtl.mm | 3 +- 7 files changed, 154 insertions(+), 21 deletions(-) diff --git a/src/compiler/translator/blocklayout.cpp b/src/compiler/translator/blocklayout.cpp index 96566302f7..126495b99d 100644 --- a/src/compiler/translator/blocklayout.cpp +++ b/src/compiler/translator/blocklayout.cpp @@ -601,7 +601,8 @@ void TraverseShaderVariable(const ShaderVariable &variable, { TraverseArrayOfArraysVariable(variable, 0u, isRowMajor, visitor); } - else if (gl::IsSamplerType(variable.type)) + else if (gl::IsSamplerType(variable.type) || gl::IsImageType(variable.type) || + variable.isFragmentInOut) { visitor->visitSampler(variable); } diff --git a/src/libANGLE/Program.cpp b/src/libANGLE/Program.cpp index a16000367b..cd2aca7c6b 100644 --- a/src/libANGLE/Program.cpp +++ b/src/libANGLE/Program.cpp @@ -3508,11 +3508,20 @@ void Program::linkSamplerAndImageBindings(GLuint *combinedImageUniforms) { ASSERT(combinedImageUniforms); + auto iter = mState.mUniforms.rbegin(); unsigned int high = static_cast(mState.mUniforms.size()); unsigned int low = high; - for (auto counterIter = mState.mUniforms.rbegin(); - counterIter != mState.mUniforms.rend() && counterIter->isAtomicCounter(); ++counterIter) + for (; iter != mState.mUniforms.rend() && iter->isFragmentInOut; ++iter) + { + --low; + } + + mState.mFragmentInoutRange = RangeUI(low, high); + + high = low; + + for (; iter != mState.mUniforms.rend() && iter->isAtomicCounter(); ++iter) { --low; } @@ -3521,8 +3530,7 @@ void Program::linkSamplerAndImageBindings(GLuint *combinedImageUniforms) high = low; - for (auto imageIter = mState.mUniforms.rbegin(); - imageIter != mState.mUniforms.rend() && imageIter->isImage(); ++imageIter) + for (; iter != mState.mUniforms.rend() && iter->isImage(); ++iter) { --low; } @@ -3554,8 +3562,7 @@ void Program::linkSamplerAndImageBindings(GLuint *combinedImageUniforms) high = low; - for (auto samplerIter = mState.mUniforms.rbegin() + mState.mImageUniformRange.length(); - samplerIter != mState.mUniforms.rend() && samplerIter->isSampler(); ++samplerIter) + for (; iter != mState.mUniforms.rend() && iter->isSampler(); ++iter) { --low; } diff --git a/src/libANGLE/Program.h b/src/libANGLE/Program.h index c028b23ec7..6bf4286503 100644 --- a/src/libANGLE/Program.h +++ b/src/libANGLE/Program.h @@ -346,6 +346,7 @@ class ProgramState final : angle::NonCopyable const std::vector &getSamplerBindings() const { return mSamplerBindings; } const std::vector &getImageBindings() const { return mImageBindings; } const sh::WorkGroupSize &getComputeShaderLocalSize() const { return mComputeShaderLocalSize; } + const RangeUI &getFragmentInoutRange() const { return mFragmentInoutRange; } const RangeUI &getSamplerUniformRange() const { return mSamplerUniformRange; } const RangeUI &getImageUniformRange() const { return mImageUniformRange; } const RangeUI &getAtomicCounterUniformRange() const { return mAtomicCounterUniformRange; } @@ -455,6 +456,7 @@ class ProgramState final : angle::NonCopyable std::vector mBufferVariables; std::vector mShaderStorageBlocks; std::vector mAtomicCounterBuffers; + RangeUI mFragmentInoutRange; RangeUI mSamplerUniformRange; RangeUI mImageUniformRange; RangeUI mAtomicCounterUniformRange; diff --git a/src/libANGLE/ProgramLinkedResources.cpp b/src/libANGLE/ProgramLinkedResources.cpp index 90849cf14e..2280691b57 100644 --- a/src/libANGLE/ProgramLinkedResources.cpp +++ b/src/libANGLE/ProgramLinkedResources.cpp @@ -359,6 +359,7 @@ struct ShaderUniformCount unsigned int samplerCount = 0; unsigned int imageCount = 0; unsigned int atomicCounterCount = 0; + unsigned int fragmentInOutCount = 0; }; ShaderUniformCount &operator+=(ShaderUniformCount &lhs, const ShaderUniformCount &rhs) @@ -367,6 +368,7 @@ ShaderUniformCount &operator+=(ShaderUniformCount &lhs, const ShaderUniformCount lhs.samplerCount += rhs.samplerCount; lhs.imageCount += rhs.imageCount; lhs.atomicCounterCount += rhs.atomicCounterCount; + lhs.fragmentInOutCount += rhs.fragmentInOutCount; return lhs; } @@ -382,6 +384,7 @@ class FlattenUniformVisitor : public sh::VariableNameVisitor std::vector *samplerUniforms, std::vector *imageUniforms, std::vector *atomicCounterUniforms, + std::vector *inputAttachmentUniforms, std::vector *unusedUniforms) : sh::VariableNameVisitor("", ""), mShaderType(shaderType), @@ -394,6 +397,7 @@ class FlattenUniformVisitor : public sh::VariableNameVisitor mSamplerUniforms(samplerUniforms), mImageUniforms(imageUniforms), mAtomicCounterUniforms(atomicCounterUniforms), + mInputAttachmentUniforms(inputAttachmentUniforms), mUnusedUniforms(unusedUniforms) {} @@ -414,6 +418,7 @@ class FlattenUniformVisitor : public sh::VariableNameVisitor bool isSampler = IsSamplerType(variable.type); bool isImage = IsImageType(variable.type); bool isAtomicCounter = IsAtomicCounterType(variable.type); + bool isFragmentInOut = variable.isFragmentInOut; std::vector *uniformList = mUniforms; if (isSampler) { @@ -427,6 +432,10 @@ class FlattenUniformVisitor : public sh::VariableNameVisitor { uniformList = mAtomicCounterUniforms; } + else if (isFragmentInOut) + { + uniformList = mInputAttachmentUniforms; + } std::string fullNameWithArrayIndex(name); std::string fullMappedNameWithArrayIndex(mappedName); @@ -469,10 +478,12 @@ class FlattenUniformVisitor : public sh::VariableNameVisitor LinkedUniform linkedUniform(variable.type, variable.precision, fullNameWithArrayIndex, variable.arraySizes, getBinding(), getOffset(), mLocation, -1, sh::kDefaultBlockMemberInfo); - linkedUniform.mappedName = fullMappedNameWithArrayIndex; - linkedUniform.active = mMarkActive; - linkedUniform.staticUse = mMarkStaticUse; + linkedUniform.mappedName = fullMappedNameWithArrayIndex; + linkedUniform.active = mMarkActive; + linkedUniform.staticUse = mMarkStaticUse; linkedUniform.outerArraySizes = arraySizes; + linkedUniform.imageUnitFormat = variable.imageUnitFormat; + linkedUniform.isFragmentInOut = variable.isFragmentInOut; if (variable.hasParentArrayIndex()) { linkedUniform.setParentArrayIndex(variable.parentArrayIndex()); @@ -483,7 +494,9 @@ class FlattenUniformVisitor : public sh::VariableNameVisitor } else { - mUnusedUniforms->emplace_back(linkedUniform.name, linkedUniform.isSampler()); + mUnusedUniforms->emplace_back( + linkedUniform.name, linkedUniform.isSampler(), linkedUniform.isImage(), + linkedUniform.isAtomicCounter(), linkedUniform.isFragmentInOut); } uniformList->push_back(linkedUniform); @@ -502,6 +515,7 @@ class FlattenUniformVisitor : public sh::VariableNameVisitor mUniformCount.samplerCount += (isSampler ? elementCount : 0); mUniformCount.imageCount += (isImage ? elementCount : 0); mUniformCount.atomicCounterCount += (isAtomicCounter ? elementCount : 0); + mUniformCount.fragmentInOutCount += (isFragmentInOut ? elementCount : 0); if (mLocation != -1) { @@ -539,6 +553,7 @@ class FlattenUniformVisitor : public sh::VariableNameVisitor std::vector *mSamplerUniforms; std::vector *mImageUniforms; std::vector *mAtomicCounterUniforms; + std::vector *mInputAttachmentUniforms; std::vector *mUnusedUniforms; ShaderUniformCount mUniformCount; unsigned int mStructStackSize = 0; @@ -912,7 +927,9 @@ void UniformLinker::pruneUnusedUniforms() } else { - mUnusedUniforms.emplace_back(uniformIter->name, uniformIter->isSampler()); + mUnusedUniforms.emplace_back(uniformIter->name, uniformIter->isSampler(), + uniformIter->isImage(), uniformIter->isAtomicCounter(), + uniformIter->isFragmentInOut); uniformIter = mUniforms.erase(uniformIter); } } @@ -924,6 +941,7 @@ bool UniformLinker::flattenUniformsAndCheckCapsForShader( std::vector &samplerUniforms, std::vector &imageUniforms, std::vector &atomicCounterUniforms, + std::vector &inputAttachmentUniforms, std::vector &unusedUniforms, InfoLog &infoLog) { @@ -931,7 +949,8 @@ bool UniformLinker::flattenUniformsAndCheckCapsForShader( for (const sh::ShaderVariable &uniform : shader->getUniforms()) { FlattenUniformVisitor flattener(shader->getType(), uniform, &mUniforms, &samplerUniforms, - &imageUniforms, &atomicCounterUniforms, &unusedUniforms); + &imageUniforms, &atomicCounterUniforms, + &inputAttachmentUniforms, &unusedUniforms); sh::TraverseShaderVariable(uniform, false, &flattener); if (uniform.active) @@ -940,7 +959,9 @@ bool UniformLinker::flattenUniformsAndCheckCapsForShader( } else { - unusedUniforms.emplace_back(uniform.name, IsSamplerType(uniform.type)); + unusedUniforms.emplace_back(uniform.name, IsSamplerType(uniform.type), + IsImageType(uniform.type), + IsAtomicCounterType(uniform.type), uniform.isFragmentInOut); } } @@ -995,6 +1016,7 @@ bool UniformLinker::flattenUniformsAndCheckCaps(const Caps &caps, InfoLog &infoL std::vector samplerUniforms; std::vector imageUniforms; std::vector atomicCounterUniforms; + std::vector inputAttachmentUniforms; std::vector unusedUniforms; for (const ShaderType shaderType : AllShaderTypes()) @@ -1006,7 +1028,8 @@ bool UniformLinker::flattenUniformsAndCheckCaps(const Caps &caps, InfoLog &infoL } if (!flattenUniformsAndCheckCapsForShader(shader, caps, samplerUniforms, imageUniforms, - atomicCounterUniforms, unusedUniforms, infoLog)) + atomicCounterUniforms, inputAttachmentUniforms, + unusedUniforms, infoLog)) { return false; } @@ -1015,6 +1038,8 @@ bool UniformLinker::flattenUniformsAndCheckCaps(const Caps &caps, InfoLog &infoL mUniforms.insert(mUniforms.end(), samplerUniforms.begin(), samplerUniforms.end()); mUniforms.insert(mUniforms.end(), imageUniforms.begin(), imageUniforms.end()); mUniforms.insert(mUniforms.end(), atomicCounterUniforms.begin(), atomicCounterUniforms.end()); + mUniforms.insert(mUniforms.end(), inputAttachmentUniforms.begin(), + inputAttachmentUniforms.end()); mUnusedUniforms.insert(mUnusedUniforms.end(), unusedUniforms.begin(), unusedUniforms.end()); return true; } diff --git a/src/libANGLE/ProgramLinkedResources.h b/src/libANGLE/ProgramLinkedResources.h index 7c2ba27342..ae6de054b0 100644 --- a/src/libANGLE/ProgramLinkedResources.h +++ b/src/libANGLE/ProgramLinkedResources.h @@ -70,6 +70,7 @@ class UniformLinker final : angle::NonCopyable std::vector &samplerUniforms, std::vector &imageUniforms, std::vector &atomicCounterUniforms, + std::vector &inputAttachmentUniforms, std::vector &unusedUniforms, InfoLog &infoLog); @@ -190,14 +191,24 @@ class AtomicCounterBufferLinker final : angle::NonCopyable // TODO(jmadill): Integrate uniform linking/filtering as well as interface blocks. struct UnusedUniform { - UnusedUniform(std::string name, bool isSampler) + UnusedUniform(std::string name, + bool isSampler, + bool isImage, + bool isAtomicCounter, + bool isFragmentInOut) { - this->name = name; - this->isSampler = isSampler; + this->name = name; + this->isSampler = isSampler; + this->isImage = isImage; + this->isAtomicCounter = isAtomicCounter; + this->isFragmentInOut = isFragmentInOut; } std::string name; bool isSampler; + bool isImage; + bool isAtomicCounter; + bool isFragmentInOut; }; struct ProgramLinkedResources diff --git a/src/libANGLE/renderer/glslang_wrapper_utils.cpp b/src/libANGLE/renderer/glslang_wrapper_utils.cpp index 8969ff4741..0815564c6b 100644 --- a/src/libANGLE/renderer/glslang_wrapper_utils.cpp +++ b/src/libANGLE/renderer/glslang_wrapper_utils.cpp @@ -129,6 +129,22 @@ class IntermediateShaderSource final : angle::NonCopyable // void insertQualifierSpecifier(const std::string &name, const std::string &specifier); + // Find @@ QUALIFIER-name(other qualifiers) @@ and replace it with: + // + // layout(layoutSpecifier) qualifierSpecifier other qualifiers + // + // or if |layoutSpecifier| is empty: + // + // qualifierSpecifier other qualifiers + // + // or if |qualifierSpecifier| is empty: + // + // layout(specifier) + // + void insertLayoutAndQualifierSpecifier(const std::string &name, + const std::string &layoutSpecifier, + const std::string &qualifierSpecifier); + // Replace @@ XFB-DECL @@ with |decl|. void insertTransformFeedbackDeclaration(const std::string &&decl); @@ -335,6 +351,26 @@ void IntermediateShaderSource::insertQualifierSpecifier(const std::string &name, } } +void IntermediateShaderSource::insertLayoutAndQualifierSpecifier( + const std::string &name, + const std::string &layoutSpecifier, + const std::string &qualifierSpecifier) +{ + for (Token &block : mTokens) + { + if (block.type == TokenType::Qualifier && block.text == name) + { + block.type = TokenType::Text; + block.text = "layout(" + layoutSpecifier + ") " + qualifierSpecifier; + if (!qualifierSpecifier.empty() && !block.args.empty()) + { + block.text += " " + block.args; + } + break; + } + } +} + void IntermediateShaderSource::replaceSingleMacro(TokenType type, const std::string &&text) { for (Token &block : mTokens) @@ -725,6 +761,52 @@ void AssignResourceBinding(gl::ShaderBitSet activeShaders, } } +uint32_t AssignInputAttachmentBindings(const GlslangSourceOptions &options, + const std::vector &uniforms, + const gl::RangeUI &inputAttachmentUniformRange, + uint32_t bindingStart, + gl::ShaderMap *shaderSources) +{ + const std::string resourcesDescriptorSet = + "set = " + Str(options.shaderResourceDescriptorSetIndex); + + uint32_t bindingIndex = bindingStart; + for (unsigned int uniformIndex : inputAttachmentUniformRange) + { + std::string mappedInputAttachmentName; + const gl::LinkedUniform &inputAttachmentUniform = uniforms[uniformIndex]; + mappedInputAttachmentName = inputAttachmentUniform.mappedName; + uint32_t inputAttachmentBindingIndex = bindingIndex + inputAttachmentUniform.location; + + const std::string bindingString = + resourcesDescriptorSet + ", binding = " + Str(bindingIndex++) + + ", input_attachment_index = " + Str(inputAttachmentBindingIndex); + + gl::ShaderBitSet activeShaders = inputAttachmentUniform.activeShaders(); + for (const gl::ShaderType shaderType : gl::AllShaderTypes()) + { + IntermediateShaderSource &shaderSource = (*shaderSources)[shaderType]; + if (!shaderSource.empty()) + { + if (activeShaders[shaderType]) + { + shaderSource.insertLayoutAndQualifierSpecifier( + mappedInputAttachmentName, bindingString, kUniformQualifier); + } + else + { + shaderSource.eraseLayoutAndQualifierSpecifiers(mappedInputAttachmentName, + kUnusedUniformSubstitution); + } + } + } + } + + // TODO: This is adding up, but may not be allocated. + bindingIndex += gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; + return bindingIndex; +} + uint32_t AssignInterfaceBlockBindings(const GlslangSourceOptions &options, const std::vector &blocks, const char *qualifier, @@ -814,6 +896,11 @@ void AssignNonTextureBindings(const GlslangSourceOptions &options, { uint32_t bindingStart = 0; + const std::vector &uniforms = programState.getUniforms(); + const gl::RangeUI &inputAttachmentUniformRange = programState.getFragmentInoutRange(); + bindingStart = AssignInputAttachmentBindings(options, uniforms, inputAttachmentUniformRange, + bindingStart, shaderSources); + const std::vector &uniformBlocks = programState.getUniformBlocks(); bindingStart = AssignInterfaceBlockBindings(options, uniformBlocks, kUniformQualifier, bindingStart, shaderSources); @@ -827,8 +914,7 @@ void AssignNonTextureBindings(const GlslangSourceOptions &options, bindingStart = AssignAtomicCounterBufferBindings(options, atomicCounterBuffers, kSSBOQualifier, bindingStart, shaderSources); - const std::vector &uniforms = programState.getUniforms(); - const gl::RangeUI &imageUniformRange = programState.getImageUniformRange(); + const gl::RangeUI &imageUniformRange = programState.getImageUniformRange(); bindingStart = AssignImageBindings(options, uniforms, imageUniformRange, bindingStart, shaderSources); } diff --git a/src/libANGLE/renderer/metal/ProgramMtl.mm b/src/libANGLE/renderer/metal/ProgramMtl.mm index 4d9037210a..1f7bc11e0b 100644 --- a/src/libANGLE/renderer/metal/ProgramMtl.mm +++ b/src/libANGLE/renderer/metal/ProgramMtl.mm @@ -425,7 +425,8 @@ void InitArgumentBufferEncoder(mtl::Context *context, if (location.used() && !location.ignored) { const gl::LinkedUniform &uniform = uniforms[location.index]; - if (uniform.isInDefaultBlock() && !uniform.isSampler()) + if (uniform.isInDefaultBlock() && !uniform.isSampler() && !uniform.isImage() && + !uniform.isFragmentInOut) { std::string uniformName = uniform.name; if (uniform.isArray()) From cc888e20589b52bf6f29320067f23a94334545fd Mon Sep 17 00:00:00 2001 From: s-inagaki923 <94434539+s-inagaki923@users.noreply.github.com> Date: Wed, 29 Dec 2021 17:59:15 +0900 Subject: [PATCH 6/9] Remove "usesTabs = 0; " from project.pbxproj --- ios/xcode/OpenGLES.xcodeproj/project.pbxproj | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ios/xcode/OpenGLES.xcodeproj/project.pbxproj b/ios/xcode/OpenGLES.xcodeproj/project.pbxproj index 232347d0db..bd0c20288b 100644 --- a/ios/xcode/OpenGLES.xcodeproj/project.pbxproj +++ b/ios/xcode/OpenGLES.xcodeproj/project.pbxproj @@ -4025,7 +4025,7 @@ 0A605361234651CB005CEA98 /* HashNames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HashNames.cpp; sourceTree = ""; }; 0A605362234651CB005CEA98 /* FunctionLookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionLookup.h; sourceTree = ""; }; 0A605363234651CB005CEA98 /* ExtensionGLSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtensionGLSL.h; sourceTree = ""; }; - 0A605366234651CB005CEA98 /* SymbolTable_autogen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolTable_autogen.cpp; sourceTree = ""; usesTabs = 0; }; + 0A605366234651CB005CEA98 /* SymbolTable_autogen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolTable_autogen.cpp; sourceTree = ""; }; 0A605367234651CB005CEA98 /* Symbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Symbol.cpp; sourceTree = ""; }; 0A605368234651CB005CEA98 /* IntermNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntermNode.cpp; sourceTree = ""; }; 0A605369234651CB005CEA98 /* glslang_lex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_lex.cpp; sourceTree = ""; }; @@ -4087,7 +4087,7 @@ 0A6053AD234651CB005CEA98 /* VariablePacker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VariablePacker.h; sourceTree = ""; }; 0A6053AE234651CB005CEA98 /* Severity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Severity.h; sourceTree = ""; }; 0A6053AF234651CB005CEA98 /* ValidateVaryingLocations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidateVaryingLocations.cpp; sourceTree = ""; }; - 0A6053B0234651CB005CEA98 /* BaseTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTypes.h; sourceTree = ""; usesTabs = 0; }; + 0A6053B0234651CB005CEA98 /* BaseTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTypes.h; sourceTree = ""; }; 0A6053B1234651CB005CEA98 /* Declarator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Declarator.cpp; sourceTree = ""; }; 0A6053B2234651CB005CEA98 /* ExtensionBehavior.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExtensionBehavior.cpp; sourceTree = ""; }; 0A6053B3234651CB005CEA98 /* ValidateSwitch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidateSwitch.cpp; sourceTree = ""; }; @@ -4098,7 +4098,7 @@ 0A6053BB234651CB005CEA98 /* InitializeDll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeDll.cpp; sourceTree = ""; }; 0A6053BC234651CB005CEA98 /* blocklayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blocklayout.h; sourceTree = ""; }; 0A6053BD234651CB005CEA98 /* PoolAlloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PoolAlloc.cpp; sourceTree = ""; }; - 0A6053BF234651CB005CEA98 /* ShaderLang.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderLang.cpp; sourceTree = ""; usesTabs = 0; }; + 0A6053BF234651CB005CEA98 /* ShaderLang.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderLang.cpp; sourceTree = ""; }; 0A6053C0234651CB005CEA98 /* SymbolUniqueId.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolUniqueId.cpp; sourceTree = ""; }; 0A6053C1234651CB005CEA98 /* SymbolTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolTable.h; sourceTree = ""; }; 0A6053C2234651CB005CEA98 /* FlagStd140Structs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlagStd140Structs.h; sourceTree = ""; }; @@ -4230,7 +4230,7 @@ 0A605453234651CB005CEA98 /* IsASTDepthBelowLimit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IsASTDepthBelowLimit.cpp; sourceTree = ""; }; 0A605454234651CB005CEA98 /* BuiltInFunctionEmulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BuiltInFunctionEmulator.cpp; sourceTree = ""; }; 0A605455234651CB005CEA98 /* PoolAlloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PoolAlloc.h; sourceTree = ""; }; - 0A605456234651CB005CEA98 /* TranslatorVulkan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorVulkan.cpp; sourceTree = ""; usesTabs = 0; }; + 0A605456234651CB005CEA98 /* TranslatorVulkan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorVulkan.cpp; sourceTree = ""; }; 0A605457234651CB005CEA98 /* OutputVulkanGLSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutputVulkanGLSL.h; sourceTree = ""; }; 0A605458234651CB005CEA98 /* ValidateGlobalInitializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidateGlobalInitializer.cpp; sourceTree = ""; }; 0A60545B234651CB005CEA98 /* OutputESSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutputESSL.h; sourceTree = ""; }; @@ -4242,7 +4242,7 @@ 0A605462234651CB005CEA98 /* FlagStd140Structs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FlagStd140Structs.cpp; sourceTree = ""; }; 0A605463234651CB005CEA98 /* TranslatorVulkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TranslatorVulkan.h; sourceTree = ""; }; 0A605464234651CB005CEA98 /* ValidateMaxParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidateMaxParameters.h; sourceTree = ""; }; - 0A605465234651CB005CEA98 /* ShaderVars.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderVars.cpp; sourceTree = ""; usesTabs = 0; }; + 0A605465234651CB005CEA98 /* ShaderVars.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderVars.cpp; sourceTree = ""; }; 0A605466234651CB005CEA98 /* ValidateOutputs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidateOutputs.h; sourceTree = ""; }; 0A605467234651CB005CEA98 /* IsASTDepthBelowLimit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IsASTDepthBelowLimit.h; sourceTree = ""; }; 0A605468234651CB005CEA98 /* ParseContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParseContext.h; sourceTree = ""; }; From 804085bd2f89c935ae90e93c325f5f1c3c1084c0 Mon Sep 17 00:00:00 2001 From: s-inagaki923 <94434539+s-inagaki923@users.noreply.github.com> Date: Wed, 5 Jan 2022 17:32:37 +0900 Subject: [PATCH 7/9] Change spirv-cross version to 0e5078dc0cfb84767b0470150d9e46fc8ffdfd36 --- DEPS | 2 +- ios/xcode/fetchDependencies.sh | 2 +- .../renderer/metal/mtl_glslang_utils.mm | 77 ++++++------------- 3 files changed, 25 insertions(+), 56 deletions(-) diff --git a/DEPS b/DEPS index 7e2df46197..32527b4b6c 100644 --- a/DEPS +++ b/DEPS @@ -24,7 +24,7 @@ vars = { 'glslang_revision': '7d65f09b83112c1ec9e29313cb9913ed2b850aa0', # Current revision of spirv-cross, the Khronos SPIRV cross compiler. - 'spirv_cross_revision': 'f38cbeb814c73510b85697adbe5e894f9eac978f', + 'spirv_cross_revision': '0e5078dc0cfb84767b0470150d9e46fc8ffdfd36', # Current revision fo the SPIRV-Headers Vulkan support library. 'spirv_headers_revision': 'f8bf11a0253a32375c32cad92c841237b96696c0', diff --git a/ios/xcode/fetchDependencies.sh b/ios/xcode/fetchDependencies.sh index 8d911aab6b..f84d1413c2 100755 --- a/ios/xcode/fetchDependencies.sh +++ b/ios/xcode/fetchDependencies.sh @@ -34,7 +34,7 @@ git_pull() } glslang_revision="7d65f09b83112c1ec9e29313cb9913ed2b850aa0" -spirv_cross_revision="f38cbeb814c73510b85697adbe5e894f9eac978f" +spirv_cross_revision="0e5078dc0cfb84767b0470150d9e46fc8ffdfd36" jsoncpp_revision="48246a099549ab325c01f69f24a34fc72e5c42e4" jsoncpp_src_revision="645250b6690785be60ab6780ce4b58698d884d11" diff --git a/src/libANGLE/renderer/metal/mtl_glslang_utils.mm b/src/libANGLE/renderer/metal/mtl_glslang_utils.mm index cfa29a78e7..ff03b72aa8 100644 --- a/src/libANGLE/renderer/metal/mtl_glslang_utils.mm +++ b/src/libANGLE/renderer/metal/mtl_glslang_utils.mm @@ -358,7 +358,7 @@ void compileEx(gl::ShaderType shaderType, if (compOpt.is_ios()) { // Enable framebuffer fetch - compOpt.ios_use_framebuffer_fetch_subpasses = true; + compOpt.use_framebuffer_fetch_subpasses = true; } spirv_cross::CompilerMSL::set_msl_options(compOpt); @@ -753,54 +753,23 @@ void emit_header() override statement(""); } - std::string to_function_name(spirv_cross::VariableID img, - const spirv_cross::SPIRType &imgType, - bool isFetch, - bool isGather, - bool isProj, - bool hasArrayOffsets, - bool hasOffset, - bool hasGrad, - bool hasDref, - uint32_t lod, - uint32_t minLod) override + std::string to_function_name(const TextureFunctionNameArguments &args) override { - if (!hasDref) + if (!args.has_dref) { - return spirv_cross::CompilerMSL::to_function_name(img, imgType, isFetch, isGather, - isProj, hasArrayOffsets, hasOffset, - hasGrad, hasDref, lod, minLod); + return spirv_cross::CompilerMSL::to_function_name(args); } // Use custom ANGLEtexture function instead of using built-in sample_compare() return "ANGLEtexture"; } - std::string to_function_args(spirv_cross::VariableID img, - const spirv_cross::SPIRType &imgType, - bool isFetch, - bool isGather, - bool isProj, - uint32_t coord, - uint32_t coordComponents, - uint32_t dref, - uint32_t gradX, - uint32_t gradY, - uint32_t lod, - uint32_t coffset, - uint32_t offset, - uint32_t bias, - uint32_t comp, - uint32_t sample, - uint32_t minlod, - bool *pForward) override + std::string to_function_args(const TextureFunctionArguments &args, bool *pForward) override { bool forward; - std::string argsWithoutDref = spirv_cross::CompilerMSL::to_function_args( - img, imgType, isFetch, isGather, isProj, coord, coordComponents, 0, gradX, gradY, lod, - coffset, offset, bias, comp, sample, minlod, &forward); + std::string argsWithoutDref = spirv_cross::CompilerMSL::to_function_args(args, &forward); - if (!dref) + if (!args.dref) { if (pForward) { @@ -809,16 +778,16 @@ void emit_header() override return argsWithoutDref; } // Convert to arguments to ANGLEtexture. - std::string args = to_expression(img); - args += ", "; - args += argsWithoutDref; - args += ", "; + std::string str = to_expression(args.base.img); + str += ", "; + str += argsWithoutDref; + str += ", "; - forward = forward && should_forward(dref); - const spirv_cross::SPIRType &drefType = expression_type(dref); + forward = forward && should_forward(args.dref); + const spirv_cross::SPIRType &drefType = expression_type(args.dref); std::string drefExpr; uint32_t altCoordComponent = 0; - switch (imgType.image.dim) + switch (args.base.imgtype->image.dim) { case spv::Dim2D: altCoordComponent = 2; @@ -831,25 +800,25 @@ void emit_header() override UNREACHABLE(); break; } - if (isProj) - drefExpr = spirv_cross::join(to_enclosed_expression(dref), " / ", - to_extract_component_expression(coord, altCoordComponent)); + if (args.base.is_proj) + drefExpr = spirv_cross::join(to_enclosed_expression(args.dref), " / ", + to_extract_component_expression(args.coord, altCoordComponent)); else - drefExpr = to_expression(dref); + drefExpr = to_expression(args.dref); if (drefType.basetype == spirv_cross::SPIRType::Half) drefExpr = convert_to_f32(drefExpr, 1); - args += drefExpr; - args += ", "; - args += toShadowCompareModeExpression(img); + str += drefExpr; + str += ", "; + str += toShadowCompareModeExpression(args.base.img); if (pForward) { *pForward = forward; } - return args; + return str; } // Override function prototype emitter to insert shadow compare mode flag to come @@ -962,7 +931,7 @@ void emit_function_prototype(spirv_cross::SPIRFunction &func, // Manufacture automatic sampler arg for SampledImage texture if (arg_type.image.dim != DimBuffer) - decl += join(", thread const ", sampler_type(arg_type), " ", to_sampler_expression(arg.id)); + decl += join(", thread const ", sampler_type(arg_type, arg.id), " ", to_sampler_expression(arg.id)); } // Manufacture automatic swizzle arg. From b58eed0c6f8a235ad60d59c2924d2a93a67f6605 Mon Sep 17 00:00:00 2001 From: s-inagaki923 <94434539+s-inagaki923@users.noreply.github.com> Date: Tue, 11 Jan 2022 18:07:05 +0900 Subject: [PATCH 8/9] Set framebuffer fetch extension to be disabled if the platform is not an actual iOS device --- src/libANGLE/renderer/metal/DisplayMtl.mm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libANGLE/renderer/metal/DisplayMtl.mm b/src/libANGLE/renderer/metal/DisplayMtl.mm index 2764c56952..5cfbc8dcb5 100644 --- a/src/libANGLE/renderer/metal/DisplayMtl.mm +++ b/src/libANGLE/renderer/metal/DisplayMtl.mm @@ -654,7 +654,9 @@ void generateExtensions(egl::DeviceExtensions *outExtensions) const override mNativeExtensions.mapBufferRange = true; mNativeExtensions.textureStorage = true; mNativeExtensions.drawBuffers = true; +#if !TARGET_OS_OSX && !TARGET_OS_MACCATALYST && !defined(ANGLE_PLATFORM_IOS_SIMULATOR) mNativeExtensions.shaderFramebufferFetch = true; +#endif mNativeExtensions.fragDepth = true; mNativeExtensions.framebufferBlit = true; mNativeExtensions.framebufferMultisample = true; From ca91413354710eb3ac2ee978e22d145f293300e3 Mon Sep 17 00:00:00 2001 From: s-inagaki923 <94434539+s-inagaki923@users.noreply.github.com> Date: Wed, 12 Jan 2022 12:54:51 +0900 Subject: [PATCH 9/9] Modify compiler.gni add ReplaceForShaderFramebufferFetch and RunAtTheBeginningOfShader --- src/compiler.gni | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/compiler.gni b/src/compiler.gni index 8aa768d0b9..deccf1a848 100644 --- a/src/compiler.gni +++ b/src/compiler.gni @@ -158,6 +158,8 @@ angle_translator_sources = [ "src/compiler/translator/tree_ops/RemovePow.h", "src/compiler/translator/tree_ops/RemoveUnreferencedVariables.cpp", "src/compiler/translator/tree_ops/RemoveUnreferencedVariables.h", + "src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.cpp", + "src/compiler/translator/tree_ops/ReplaceForShaderFramebufferFetch.h", "src/compiler/translator/tree_ops/RewriteAtomicCounters.cpp", "src/compiler/translator/tree_ops/RewriteAtomicCounters.h", "src/compiler/translator/tree_ops/RewriteAtomicFunctionExpressions.cpp", @@ -219,6 +221,8 @@ angle_translator_sources = [ "src/compiler/translator/tree_util/ReplaceClipDistanceVariable.h", "src/compiler/translator/tree_util/ReplaceShadowingVariables.cpp", "src/compiler/translator/tree_util/ReplaceShadowingVariables.h", + "src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp", + "src/compiler/translator/tree_util/RunAtTheBeginningOfShader.h", "src/compiler/translator/tree_util/RunAtTheEndOfShader.cpp", "src/compiler/translator/tree_util/RunAtTheEndOfShader.h", "src/compiler/translator/tree_util/Visit.h",